This commit is contained in:
Flatcar Buildbot 2020-01-20 17:00:01 +01:00 committed by Kai Lüke
parent 47817d6ad3
commit 05ea457a5f
8 changed files with 2 additions and 331 deletions

View File

@ -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

View File

@ -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

View File

@ -11,7 +11,7 @@ inherit coreos-go cros-workon systemd udev
if [[ "${PV}" == 9999 ]]; then
KEYWORDS="~amd64 ~arm64"
else
CROS_WORKON_COMMIT="774f0d1533745adbcdfaf017d1ac575c92b613f5" # tag v0.33.0
CROS_WORKON_COMMIT="88f51f2e669377fa2bbac038064e1dc19849dc3a" # tag v0.34.0
KEYWORDS="amd64 arm64"
fi
@ -41,8 +41,6 @@ RDEPEND="
RDEPEND+="${DEPEND}"
PATCHES=(
"${FILESDIR}/0001-providers-allow-FetchConfig-to-mutate-the-fetcher.patch"
"${FILESDIR}/0002-providers-aws-get-region-after-getting-config.patch"
)
src_compile() {

View File

@ -1,2 +1,2 @@
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