[lxc-devel] [lxd/master] Expand our user-agent some more
stgraber on Github
lxc-bot at linuxcontainers.org
Tue Feb 27 22:34:21 UTC 2018
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 301 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20180227/85601694/attachment.bin>
-------------- next part --------------
From 126377d999ae240194e60b4dbad806e5ea7900e9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Tue, 27 Feb 2018 17:23:02 -0500
Subject: [PATCH 1/3] Fix double initialization of uevent handler
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
lxd/daemon.go | 20 +++++++++++---------
lxd/devices.go | 2 +-
2 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/lxd/daemon.go b/lxd/daemon.go
index ac319845c..805db9679 100644
--- a/lxd/daemon.go
+++ b/lxd/daemon.go
@@ -518,27 +518,31 @@ func (d *Daemon) init() error {
/* Log expiry */
d.tasks.Add(expireLogsTask(d.State()))
- /* set the initial proxy function and external auth based on config values in the DB */
+ /* Setup the proxy handler, external authentication and MAAS */
macaroonEndpoint := ""
maasAPIURL := ""
maasAPIKey := ""
maasMachine := ""
+
err = d.db.Transaction(func(tx *db.NodeTx) error {
config, err := node.ConfigLoad(tx)
if err != nil {
return err
}
+
maasMachine = config.MAASMachine()
return nil
})
if err != nil {
return err
}
+
err = d.cluster.Transaction(func(tx *db.ClusterTx) error {
config, err := cluster.ConfigLoad(tx)
if err != nil {
return err
}
+
d.proxy = shared.ProxyFromConfig(
config.ProxyHTTPS(), config.ProxyHTTP(), config.ProxyIgnoreHosts(),
)
@@ -549,37 +553,35 @@ func (d *Daemon) init() error {
if err != nil {
return err
}
+
err = d.setupExternalAuthentication(macaroonEndpoint)
if err != nil {
return err
}
+
if !d.os.MockMode {
- /* Start the scheduler */
+ // Start the scheduler
go deviceEventListener(d.State())
+ // Setup inotify watches
_, err := deviceInotifyInit(d.State())
if err != nil {
return err
}
deviceInotifyDirRescan(d.State())
-
go deviceInotifyHandler(d.State())
+ // Read the trusted certificates
readSavedClientCAList(d)
}
+ // Connect to MAAS
err = d.setupMAASController(maasAPIURL, maasAPIKey, maasMachine)
if err != nil {
return err
}
- if !d.os.MockMode {
- /* Start the scheduler */
- go deviceEventListener(d.State())
- readSavedClientCAList(d)
- }
-
close(d.setupChan)
// Run the post initialization actions
diff --git a/lxd/devices.go b/lxd/devices.go
index 590a3e10f..b023f3dba 100644
--- a/lxd/devices.go
+++ b/lxd/devices.go
@@ -817,7 +817,7 @@ func deviceUSBEvent(s *state.State, usb usbDevice) {
func deviceEventListener(s *state.State) {
chNetlinkCPU, chNetlinkNetwork, chUSB, err := deviceNetlinkListener()
if err != nil {
- logger.Errorf("scheduler: couldn't setup netlink listener")
+ logger.Errorf("scheduler: couldn't setup netlink listener: %v", err)
return
}
From 6ec797482ae68c447de3f5b76671c13cbee5c530 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Tue, 27 Feb 2018 17:31:38 -0500
Subject: [PATCH 2/3] shared/version: Export features in agent
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
shared/version/useragent.go | 30 +++++++++++++++++++++++-------
1 file changed, 23 insertions(+), 7 deletions(-)
diff --git a/shared/version/useragent.go b/shared/version/useragent.go
index 8e3e08965..83bf04751 100644
--- a/shared/version/useragent.go
+++ b/shared/version/useragent.go
@@ -9,9 +9,11 @@ import (
)
// UserAgent contains a string suitable as a user-agent
-var UserAgent = getUserAgent(nil)
+var UserAgent = getUserAgent()
+var userAgentStorageBackends []string
+var userAgentFeatures []string
-func getUserAgent(storageTokens []string) string {
+func getUserAgent() string {
archID, err := osarch.ArchitectureId(runtime.GOARCH)
if err != nil {
panic(err)
@@ -25,13 +27,20 @@ func getUserAgent(storageTokens []string) string {
osTokens := []string{strings.Title(runtime.GOOS), arch}
osTokens = append(osTokens, getPlatformVersionStrings()...)
+ // Initial version string
agent := fmt.Sprintf("LXD %s", Version)
- if len(osTokens) > 0 {
- agent = fmt.Sprintf("%s (%s)", agent, strings.Join(osTokens, "; "))
+
+ // OS information
+ agent = fmt.Sprintf("%s (%s)", agent, strings.Join(osTokens, "; "))
+
+ // Storage information
+ if len(userAgentStorageBackends) > 0 {
+ agent = fmt.Sprintf("%s (%s)", agent, strings.Join(userAgentStorageBackends, "; "))
}
- if len(storageTokens) > 0 {
- agent = fmt.Sprintf("%s (%s)", agent, strings.Join(storageTokens, "; "))
+ // Feature information
+ if len(userAgentFeatures) > 0 {
+ agent = fmt.Sprintf("%s (%s)", agent, strings.Join(userAgentFeatures, "; "))
}
return agent
@@ -39,5 +48,12 @@ func getUserAgent(storageTokens []string) string {
// UserAgentStorageBackends updates the list of storage backends to include in the user-agent
func UserAgentStorageBackends(backends []string) {
- UserAgent = getUserAgent(backends)
+ userAgentStorageBackends = backends
+ UserAgent = getUserAgent()
+}
+
+// UserAgentFeatures updates the list of advertised features
+func UserAgentFeatures(features []string) {
+ userAgentFeatures = features
+ UserAgent = getUserAgent()
}
From 9d05f708db1c6a34b363dd6853bffdc193ccae97 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Tue, 27 Feb 2018 17:32:04 -0500
Subject: [PATCH 3/3] Include cluster as a User-Agent feature
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
lxd/api_cluster.go | 13 ++++++++++++-
lxd/daemon.go | 10 ++++++++++
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/lxd/api_cluster.go b/lxd/api_cluster.go
index de02463fb..ddd7de664 100644
--- a/lxd/api_cluster.go
+++ b/lxd/api_cluster.go
@@ -90,6 +90,7 @@ func clusterPut(d *Daemon, r *http.Request) Response {
if req.ClusterAddress == "" {
return clusterPutBootstrap(d, req)
}
+
return clusterPutJoin(d, req)
}
@@ -105,6 +106,9 @@ func clusterPutBootstrap(d *Daemon, req api.ClusterPut) Response {
return InternalError(err)
}
+ // Add the cluster flag from the agent
+ version.UserAgentFeatures([]string{"cluster"})
+
return OperationResponse(op)
}
@@ -235,9 +239,13 @@ func clusterPutJoin(d *Daemon, req api.ClusterPut) Response {
if err != nil {
return err
}
- return nil
+ // Add the cluster flag from the agent
+ version.UserAgentFeatures([]string{"cluster"})
+
+ return nil
}
+
resources := map[string][]string{}
resources["cluster"] = []string{}
@@ -290,6 +298,9 @@ func clusterPutDisable(d *Daemon) Response {
return SmartError(err)
}
+ // Remove the cluster flag from the agent
+ version.UserAgentFeatures(nil)
+
return EmptySyncResponse
}
diff --git a/lxd/daemon.go b/lxd/daemon.go
index 805db9679..d8ebcace7 100644
--- a/lxd/daemon.go
+++ b/lxd/daemon.go
@@ -491,6 +491,16 @@ func (d *Daemon) init() error {
}
}
+ // Setup the user-agent
+ clustered, err := cluster.Enabled(d.db)
+ if err != nil {
+ return err
+ }
+
+ if clustered {
+ version.UserAgentFeatures([]string{"cluster"})
+ }
+
/* Read the storage pools */
err = SetupStorageDriver(d.State(), false)
if err != nil {
More information about the lxc-devel
mailing list