mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-19 05:21:23 +02:00
2387.0.0
This commit is contained in:
parent
47817d6ad3
commit
05ea457a5f
@ -1,277 +0,0 @@
|
|||||||
From 27c62d8543b603420e0a951f38d2fe3b8640006c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Andrew Jeddeloh <ajeddelo@redhat.com>
|
|
||||||
Date: Mon, 22 Jul 2019 11:09:53 -0700
|
|
||||||
Subject: [PATCH 1/2] providers: allow FetchConfig to mutate the fetcher
|
|
||||||
|
|
||||||
Allow each provider's FetchConfig function to mutate the provider it
|
|
||||||
uses. This will allow the aws platform to set the region after it has
|
|
||||||
fetched the config.
|
|
||||||
---
|
|
||||||
internal/exec/engine.go | 2 +-
|
|
||||||
internal/providers/azure/azure.go | 2 +-
|
|
||||||
internal/providers/cloudstack/cloudstack.go | 4 ++--
|
|
||||||
internal/providers/cmdline/cmdline.go | 2 +-
|
|
||||||
internal/providers/digitalocean/digitalocean.go | 2 +-
|
|
||||||
internal/providers/ec2/ec2.go | 2 +-
|
|
||||||
internal/providers/file/file.go | 2 +-
|
|
||||||
internal/providers/gce/gce.go | 2 +-
|
|
||||||
internal/providers/noop/noop.go | 2 +-
|
|
||||||
internal/providers/openstack/openstack.go | 4 ++--
|
|
||||||
internal/providers/packet/packet.go | 2 +-
|
|
||||||
internal/providers/providers.go | 2 +-
|
|
||||||
internal/providers/qemu/qemu.go | 2 +-
|
|
||||||
internal/providers/system/system.go | 2 +-
|
|
||||||
internal/providers/virtualbox/virtualbox.go | 2 +-
|
|
||||||
internal/providers/vmware/vmware_amd64.go | 4 ++--
|
|
||||||
internal/providers/vmware/vmware_unsupported.go | 2 +-
|
|
||||||
17 files changed, 20 insertions(+), 20 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/internal/exec/engine.go b/internal/exec/engine.go
|
|
||||||
index 1f7ad96..6a82c2d 100644
|
|
||||||
--- a/internal/exec/engine.go
|
|
||||||
+++ b/internal/exec/engine.go
|
|
||||||
@@ -196,7 +196,7 @@ func (e *Engine) fetchProviderConfig() (types.Config, error) {
|
|
||||||
var r report.Report
|
|
||||||
var err error
|
|
||||||
for _, fetcher := range fetchers {
|
|
||||||
- cfg, r, err = fetcher(*e.Fetcher)
|
|
||||||
+ cfg, r, err = fetcher(e.Fetcher)
|
|
||||||
if err != providers.ErrNoProvider {
|
|
||||||
// successful, or failed on another error
|
|
||||||
break
|
|
||||||
diff --git a/internal/providers/azure/azure.go b/internal/providers/azure/azure.go
|
|
||||||
index b7cfa73..b29e7c6 100644
|
|
||||||
--- a/internal/providers/azure/azure.go
|
|
||||||
+++ b/internal/providers/azure/azure.go
|
|
||||||
@@ -51,7 +51,7 @@ const (
|
|
||||||
CDS_DISC_OK
|
|
||||||
)
|
|
||||||
|
|
||||||
-func FetchConfig(f resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
+func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
devicePath := filepath.Join(distro.DiskByIDDir(), configDeviceID)
|
|
||||||
|
|
||||||
logger := f.Logger
|
|
||||||
diff --git a/internal/providers/cloudstack/cloudstack.go b/internal/providers/cloudstack/cloudstack.go
|
|
||||||
index 26d2550..b8a2e23 100644
|
|
||||||
--- a/internal/providers/cloudstack/cloudstack.go
|
|
||||||
+++ b/internal/providers/cloudstack/cloudstack.go
|
|
||||||
@@ -45,7 +45,7 @@ const (
|
|
||||||
LeaseRetryInterval = 500 * time.Millisecond
|
|
||||||
)
|
|
||||||
|
|
||||||
-func FetchConfig(f resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
+func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
var data []byte
|
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
|
|
||||||
|
|
||||||
@@ -191,7 +191,7 @@ func fetchConfigFromDevice(logger *log.Logger, ctx context.Context, label string
|
|
||||||
return ioutil.ReadFile(filepath.Join(mnt, configDriveUserdataPath))
|
|
||||||
}
|
|
||||||
|
|
||||||
-func fetchConfigFromMetadataService(f resource.Fetcher) ([]byte, error) {
|
|
||||||
+func fetchConfigFromMetadataService(f *resource.Fetcher) ([]byte, error) {
|
|
||||||
addr, err := getDHCPServerAddress()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
diff --git a/internal/providers/cmdline/cmdline.go b/internal/providers/cmdline/cmdline.go
|
|
||||||
index 1a393fb..505e48f 100644
|
|
||||||
--- a/internal/providers/cmdline/cmdline.go
|
|
||||||
+++ b/internal/providers/cmdline/cmdline.go
|
|
||||||
@@ -36,7 +36,7 @@ const (
|
|
||||||
cmdlineUrlFlag = "ignition.config.url"
|
|
||||||
)
|
|
||||||
|
|
||||||
-func FetchConfig(f resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
+func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
url, err := readCmdline(f.Logger)
|
|
||||||
if err != nil {
|
|
||||||
return types.Config{}, report.Report{}, err
|
|
||||||
diff --git a/internal/providers/digitalocean/digitalocean.go b/internal/providers/digitalocean/digitalocean.go
|
|
||||||
index 9fdd72a..2acfea4 100644
|
|
||||||
--- a/internal/providers/digitalocean/digitalocean.go
|
|
||||||
+++ b/internal/providers/digitalocean/digitalocean.go
|
|
||||||
@@ -34,7 +34,7 @@ var (
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
-func FetchConfig(f resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
+func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
data, err := f.FetchToBuffer(userdataUrl, resource.FetchOptions{
|
|
||||||
Headers: resource.ConfigHeaders,
|
|
||||||
})
|
|
||||||
diff --git a/internal/providers/ec2/ec2.go b/internal/providers/ec2/ec2.go
|
|
||||||
index 19d5d8b..535398e 100644
|
|
||||||
--- a/internal/providers/ec2/ec2.go
|
|
||||||
+++ b/internal/providers/ec2/ec2.go
|
|
||||||
@@ -40,7 +40,7 @@ var (
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
-func FetchConfig(f resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
+func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
data, err := f.FetchToBuffer(userdataUrl, resource.FetchOptions{
|
|
||||||
Headers: resource.ConfigHeaders,
|
|
||||||
})
|
|
||||||
diff --git a/internal/providers/file/file.go b/internal/providers/file/file.go
|
|
||||||
index b2d2766..245af8d 100644
|
|
||||||
--- a/internal/providers/file/file.go
|
|
||||||
+++ b/internal/providers/file/file.go
|
|
||||||
@@ -29,7 +29,7 @@ const (
|
|
||||||
defaultFilename = "config.ign"
|
|
||||||
)
|
|
||||||
|
|
||||||
-func FetchConfig(f resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
+func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
filename := os.Getenv(cfgFilenameEnvVar)
|
|
||||||
if filename == "" {
|
|
||||||
filename = defaultFilename
|
|
||||||
diff --git a/internal/providers/gce/gce.go b/internal/providers/gce/gce.go
|
|
||||||
index 991745c..c1f2b75 100644
|
|
||||||
--- a/internal/providers/gce/gce.go
|
|
||||||
+++ b/internal/providers/gce/gce.go
|
|
||||||
@@ -36,7 +36,7 @@ var (
|
|
||||||
metadataHeaderVal = "Google"
|
|
||||||
)
|
|
||||||
|
|
||||||
-func FetchConfig(f resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
+func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
headers := resource.ConfigHeaders
|
|
||||||
headers.Set(metadataHeaderKey, metadataHeaderVal)
|
|
||||||
data, err := f.FetchToBuffer(userdataUrl, resource.FetchOptions{
|
|
||||||
diff --git a/internal/providers/noop/noop.go b/internal/providers/noop/noop.go
|
|
||||||
index c972f47..d9b5798 100644
|
|
||||||
--- a/internal/providers/noop/noop.go
|
|
||||||
+++ b/internal/providers/noop/noop.go
|
|
||||||
@@ -23,7 +23,7 @@ import (
|
|
||||||
"github.com/coreos/ignition/internal/resource"
|
|
||||||
)
|
|
||||||
|
|
||||||
-func FetchConfig(f resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
+func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
f.Logger.Debug("noop provider fetching empty config")
|
|
||||||
return types.Config{}, report.Report{}, errors.ErrEmpty
|
|
||||||
}
|
|
||||||
diff --git a/internal/providers/openstack/openstack.go b/internal/providers/openstack/openstack.go
|
|
||||||
index 0d90c64..723c10c 100644
|
|
||||||
--- a/internal/providers/openstack/openstack.go
|
|
||||||
+++ b/internal/providers/openstack/openstack.go
|
|
||||||
@@ -50,7 +50,7 @@ var (
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
-func FetchConfig(f resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
+func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
var data []byte
|
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
|
|
||||||
|
|
||||||
@@ -129,7 +129,7 @@ func fetchConfigFromDevice(logger *log.Logger, ctx context.Context, path string)
|
|
||||||
return ioutil.ReadFile(filepath.Join(mnt, configDriveUserdataPath))
|
|
||||||
}
|
|
||||||
|
|
||||||
-func fetchConfigFromMetadataService(f resource.Fetcher) ([]byte, error) {
|
|
||||||
+func fetchConfigFromMetadataService(f *resource.Fetcher) ([]byte, error) {
|
|
||||||
res, err := f.FetchToBuffer(metadataServiceUrl, resource.FetchOptions{
|
|
||||||
Headers: resource.ConfigHeaders,
|
|
||||||
})
|
|
||||||
diff --git a/internal/providers/packet/packet.go b/internal/providers/packet/packet.go
|
|
||||||
index 4a010f8..a81ffb9 100644
|
|
||||||
--- a/internal/providers/packet/packet.go
|
|
||||||
+++ b/internal/providers/packet/packet.go
|
|
||||||
@@ -51,7 +51,7 @@ var (
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
-func FetchConfig(f resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
+func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
// Packet's metadata service returns "Not Acceptable" when queried
|
|
||||||
// with the default Accept header.
|
|
||||||
headers := resource.ConfigHeaders
|
|
||||||
diff --git a/internal/providers/providers.go b/internal/providers/providers.go
|
|
||||||
index 99933cc..8a9c47c 100644
|
|
||||||
--- a/internal/providers/providers.go
|
|
||||||
+++ b/internal/providers/providers.go
|
|
||||||
@@ -27,6 +27,6 @@ var (
|
|
||||||
ErrNoProvider = errors.New("config provider was not online")
|
|
||||||
)
|
|
||||||
|
|
||||||
-type FuncFetchConfig func(f resource.Fetcher) (types.Config, report.Report, error)
|
|
||||||
+type FuncFetchConfig func(f *resource.Fetcher) (types.Config, report.Report, error)
|
|
||||||
type FuncNewFetcher func(logger *log.Logger) (resource.Fetcher, error)
|
|
||||||
type FuncPostStatus func(stageName string, f resource.Fetcher, e error) error
|
|
||||||
diff --git a/internal/providers/qemu/qemu.go b/internal/providers/qemu/qemu.go
|
|
||||||
index 46df749..676b00c 100644
|
|
||||||
--- a/internal/providers/qemu/qemu.go
|
|
||||||
+++ b/internal/providers/qemu/qemu.go
|
|
||||||
@@ -32,7 +32,7 @@ const (
|
|
||||||
firmwareConfigPath = "/sys/firmware/qemu_fw_cfg/by_name/opt/com.coreos/config/raw"
|
|
||||||
)
|
|
||||||
|
|
||||||
-func FetchConfig(f resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
+func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
_, err := f.Logger.LogCmd(exec.Command("modprobe", "qemu_fw_cfg"), "loading QEMU firmware config module")
|
|
||||||
if err != nil {
|
|
||||||
return types.Config{}, report.Report{}, err
|
|
||||||
diff --git a/internal/providers/system/system.go b/internal/providers/system/system.go
|
|
||||||
index c728caf..49d2f0e 100644
|
|
||||||
--- a/internal/providers/system/system.go
|
|
||||||
+++ b/internal/providers/system/system.go
|
|
||||||
@@ -42,7 +42,7 @@ func FetchDefaultConfig(logger *log.Logger) (types.Config, report.Report, error)
|
|
||||||
return fetchConfig(logger, defaultFilename)
|
|
||||||
}
|
|
||||||
|
|
||||||
-func FetchConfig(f resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
+func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
return fetchConfig(f.Logger, userFilename)
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/internal/providers/virtualbox/virtualbox.go b/internal/providers/virtualbox/virtualbox.go
|
|
||||||
index ba1f298..f73d451 100644
|
|
||||||
--- a/internal/providers/virtualbox/virtualbox.go
|
|
||||||
+++ b/internal/providers/virtualbox/virtualbox.go
|
|
||||||
@@ -35,7 +35,7 @@ const (
|
|
||||||
partUUID = "99570a8a-f826-4eb0-ba4e-9dd72d55ea13"
|
|
||||||
)
|
|
||||||
|
|
||||||
-func FetchConfig(f resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
+func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
f.Logger.Debug("Attempting to read config drive")
|
|
||||||
rawConfig, err := ioutil.ReadFile(filepath.Join(distro.DiskByPartUUIDDir(), partUUID))
|
|
||||||
if os.IsNotExist(err) {
|
|
||||||
diff --git a/internal/providers/vmware/vmware_amd64.go b/internal/providers/vmware/vmware_amd64.go
|
|
||||||
index 19e1ec4..7fa0f31 100644
|
|
||||||
--- a/internal/providers/vmware/vmware_amd64.go
|
|
||||||
+++ b/internal/providers/vmware/vmware_amd64.go
|
|
||||||
@@ -29,7 +29,7 @@ import (
|
|
||||||
"github.com/vmware/vmw-ovflib"
|
|
||||||
)
|
|
||||||
|
|
||||||
-func FetchConfig(f resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
+func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
if !vmcheck.IsVirtualWorld() {
|
|
||||||
return types.Config{}, report.Report{}, providers.ErrNoProvider
|
|
||||||
}
|
|
||||||
@@ -49,7 +49,7 @@ func FetchConfig(f resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
return util.ParseConfig(f.Logger, decodedData)
|
|
||||||
}
|
|
||||||
|
|
||||||
-func fetchRawConfig(f resource.Fetcher) (config, error) {
|
|
||||||
+func fetchRawConfig(f *resource.Fetcher) (config, error) {
|
|
||||||
info := rpcvmx.NewConfig()
|
|
||||||
|
|
||||||
var ovfData string
|
|
||||||
diff --git a/internal/providers/vmware/vmware_unsupported.go b/internal/providers/vmware/vmware_unsupported.go
|
|
||||||
index cbcc322..999eb66 100644
|
|
||||||
--- a/internal/providers/vmware/vmware_unsupported.go
|
|
||||||
+++ b/internal/providers/vmware/vmware_unsupported.go
|
|
||||||
@@ -27,6 +27,6 @@ import (
|
|
||||||
"github.com/coreos/ignition/internal/resource"
|
|
||||||
)
|
|
||||||
|
|
||||||
-func FetchConfig(_ resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
+func FetchConfig(_ *resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
return types.Config{}, report.Report{}, errors.New("vmware provider is not supported on this architecture")
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.21.0
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
|||||||
From 5d504694380191d85345632caa5afd9d39c4ad99 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Andrew Jeddeloh <ajeddelo@redhat.com>
|
|
||||||
Date: Mon, 22 Jul 2019 11:09:58 -0700
|
|
||||||
Subject: [PATCH 2/2] providers/aws: get region after getting config.
|
|
||||||
|
|
||||||
We try to set the region as soon as Ignition starts, but sometimes the
|
|
||||||
metadata server isn't accessible yet. Set the region after we've fetched
|
|
||||||
the config since the server must be up by then.
|
|
||||||
---
|
|
||||||
internal/providers/ec2/ec2.go | 17 +++++++++--------
|
|
||||||
1 file changed, 9 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/internal/providers/ec2/ec2.go b/internal/providers/ec2/ec2.go
|
|
||||||
index 535398e..65c998a 100644
|
|
||||||
--- a/internal/providers/ec2/ec2.go
|
|
||||||
+++ b/internal/providers/ec2/ec2.go
|
|
||||||
@@ -48,6 +48,13 @@ func FetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
|
|
||||||
return types.Config{}, report.Report{}, err
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // Determine the partition and region this instance is in
|
|
||||||
+ regionHint, err := ec2metadata.New(f.AWSSession).Region()
|
|
||||||
+ if err != nil {
|
|
||||||
+ regionHint = "us-east-1"
|
|
||||||
+ }
|
|
||||||
+ f.S3RegionHint = regionHint
|
|
||||||
+
|
|
||||||
return util.ParseConfig(f.Logger, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -58,14 +65,8 @@ func NewFetcher(l *log.Logger) (resource.Fetcher, error) {
|
|
||||||
}
|
|
||||||
sess.Config.Credentials = ec2rolecreds.NewCredentials(sess)
|
|
||||||
|
|
||||||
- // Determine the partition and region this ec2 is in
|
|
||||||
- regionHint, err := ec2metadata.New(sess).Region()
|
|
||||||
- if err != nil {
|
|
||||||
- regionHint = "us-east-1"
|
|
||||||
- }
|
|
||||||
return resource.Fetcher{
|
|
||||||
- Logger: l,
|
|
||||||
- AWSSession: sess,
|
|
||||||
- S3RegionHint: regionHint,
|
|
||||||
+ Logger: l,
|
|
||||||
+ AWSSession: sess,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.21.0
|
|
||||||
|
|
@ -11,7 +11,7 @@ inherit coreos-go cros-workon systemd udev
|
|||||||
if [[ "${PV}" == 9999 ]]; then
|
if [[ "${PV}" == 9999 ]]; then
|
||||||
KEYWORDS="~amd64 ~arm64"
|
KEYWORDS="~amd64 ~arm64"
|
||||||
else
|
else
|
||||||
CROS_WORKON_COMMIT="774f0d1533745adbcdfaf017d1ac575c92b613f5" # tag v0.33.0
|
CROS_WORKON_COMMIT="88f51f2e669377fa2bbac038064e1dc19849dc3a" # tag v0.34.0
|
||||||
KEYWORDS="amd64 arm64"
|
KEYWORDS="amd64 arm64"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -41,8 +41,6 @@ RDEPEND="
|
|||||||
RDEPEND+="${DEPEND}"
|
RDEPEND+="${DEPEND}"
|
||||||
|
|
||||||
PATCHES=(
|
PATCHES=(
|
||||||
"${FILESDIR}/0001-providers-allow-FetchConfig-to-mutate-the-fetcher.patch"
|
|
||||||
"${FILESDIR}/0002-providers-aws-get-region-after-getting-config.patch"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
src_compile() {
|
src_compile() {
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
DIST linux-4.19.tar.xz 103117552 BLAKE2B 1dbf16cf410867412d17568fe42bc1e90c034183b654d270b650621ff7664a321950943d0639205bc1ee7ef6210be170c1f2c785a042ed8a4ec5e3a486d890e0 SHA512 ab67cc746b375a8b135e8b23e35e1d6787930d19b3c26b2679787d62951cbdbc3bb66f8ededeb9b890e5008b2459397f9018f1a6772fdef67780b06a4cb9f6f4
|
DIST linux-4.19.tar.xz 103117552 BLAKE2B 1dbf16cf410867412d17568fe42bc1e90c034183b654d270b650621ff7664a321950943d0639205bc1ee7ef6210be170c1f2c785a042ed8a4ec5e3a486d890e0 SHA512 ab67cc746b375a8b135e8b23e35e1d6787930d19b3c26b2679787d62951cbdbc3bb66f8ededeb9b890e5008b2459397f9018f1a6772fdef67780b06a4cb9f6f4
|
||||||
DIST patch-4.19.89.xz 2392432 BLAKE2B feba5d1f26d4552f05f6eecd1dcd95d68d908454aaacf49691cb8e61769d944c9ed7f901e1c1ad7681e2b10f91200be8e9fd2ebb2366d52b0ad986995d8014d6 SHA512 36725681d80eccf4cb7eca95a307f6831345936345c558c93f458c8bdf9ec547308f70dd93b651b210e5de181433d47fa1283edf753f49f1aecc80967da371eb
|
DIST patch-4.19.97.xz 2553356 BLAKE2B 5a1d45c1b5e67890a60a5b6dcb3a8b00f433802a823d07c38d4a03cb3af02efceeb73d9b6db1ffa69cf6489566f173e4ef1c005b4c725153c2edb60f26cd3d2b SHA512 4a8ad6c6a7964b587749f9f13555a068cced3df87aa976bf1f1b2a8c6735dd0dc4ba1877d808ec293f837be1655df844d38a511031124bb0ead7f50717e6ba88
|
||||||
|
Loading…
x
Reference in New Issue
Block a user