Re: [libvirt] [PATCH v4 2/8] libxl: pass driver config to libxlMakeDomBuildInfo

2018-02-12 Thread Jim Fehlig

On 02/08/2018 03:58 PM, Marek Marczykowski-Górecki wrote:

Preparation for global nestedhvm configuration - libxlMakeDomBuildInfo
needs access to libxlDriverConfig.
No functional change.

Adjusting tests require slightly more mockup functions, because of
libxlDriverConfigNew() call.

---
Changes since v3:
  - new patch, preparation
---
  src/libxl/libxl_conf.c |  8 +---
  src/libxl/libxl_conf.h |  2 +-
  src/libxl/libxl_domain.c   |  2 +-
  tests/libxlxml2domconfigtest.c | 20 +---
  tests/virmocklibxl.c   | 25 +
  5 files changed, 45 insertions(+), 12 deletions(-)

diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
index 2d2a707..8cced29 100644
--- a/src/libxl/libxl_conf.c
+++ b/src/libxl/libxl_conf.c
@@ -271,10 +271,11 @@ libxlMakeChrdevStr(virDomainChrDefPtr def, char **buf)
  
  static int

  libxlMakeDomBuildInfo(virDomainDefPtr def,
-  libxl_ctx *ctx,
+  libxlDriverConfigPtr cfg,
virCapsPtr caps,
libxl_domain_config *d_config)
  {
+libxl_ctx *ctx = cfg->ctx;
  libxl_domain_build_info *b_info = _config->b_info;
  int hvm = def->os.type == VIR_DOMAIN_OSTYPE_HVM;
  size_t i;
@@ -2288,16 +2289,17 @@ int
  libxlBuildDomainConfig(virPortAllocatorPtr graphicsports,
 virDomainDefPtr def,
 const char *channelDir LIBXL_ATTR_UNUSED,
-   libxl_ctx *ctx,
+   libxlDriverConfigPtr cfg,


I can't recall if the only reason we were avoiding passing a 
libxlDriverConfigPtr is the extra mocking. If so, that's not reason enough to 
avoid it.



 virCapsPtr caps,
 libxl_domain_config *d_config)
  {
+libxl_ctx *ctx = cfg->ctx;
  libxl_domain_config_init(d_config);
  
  if (libxlMakeDomCreateInfo(ctx, def, _config->c_info) < 0)

  return -1;
  
-if (libxlMakeDomBuildInfo(def, ctx, caps, d_config) < 0)

+if (libxlMakeDomBuildInfo(def, cfg, caps, d_config) < 0)
  return -1;
  
  #ifdef LIBXL_HAVE_VNUMA

diff --git a/src/libxl/libxl_conf.h b/src/libxl/libxl_conf.h
index 264df11..8eefe06 100644
--- a/src/libxl/libxl_conf.h
+++ b/src/libxl/libxl_conf.h
@@ -216,7 +216,7 @@ int
  libxlBuildDomainConfig(virPortAllocatorPtr graphicsports,
 virDomainDefPtr def,
 const char *channelDir LIBXL_ATTR_UNUSED,
-   libxl_ctx *ctx,
+   libxlDriverConfigPtr cfg,
 virCapsPtr caps,
 libxl_domain_config *d_config);
  
diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c

index 395c8a9..0a60444 100644
--- a/src/libxl/libxl_domain.c
+++ b/src/libxl/libxl_domain.c
@@ -1253,7 +1253,7 @@ libxlDomainStart(libxlDriverPrivatePtr driver,
  goto cleanup_dom;
  
  if (libxlBuildDomainConfig(driver->reservedGraphicsPorts, vm->def,

-   cfg->channelDir, cfg->ctx, cfg->caps, _config) 
< 0)
+   cfg->channelDir, cfg, cfg->caps, _config) < 0)


If we are going to pass the entire libxlDriverConfigPtr to 
libxlBuildDomainConfig(), the channelDir and caps parameters can be dropped.


Regards,
Jim


  goto cleanup_dom;
  
  if (cfg->autoballoon && libxlDomainFreeMem(cfg->ctx, _config) < 0)

diff --git a/tests/libxlxml2domconfigtest.c b/tests/libxlxml2domconfigtest.c
index bd4c3af..0105550 100644
--- a/tests/libxlxml2domconfigtest.c
+++ b/tests/libxlxml2domconfigtest.c
@@ -56,8 +56,8 @@ testCompareXMLToDomConfig(const char *xmlfile,
  int ret = -1;
  libxl_domain_config actualconfig;
  libxl_domain_config expectconfig;
+libxlDriverConfigPtr cfg;
  xentoollog_logger *log = NULL;
-libxl_ctx *ctx = NULL;
  virPortAllocatorPtr gports = NULL;
  virDomainXMLOptionPtr xmlopt = NULL;
  virDomainDefPtr vmdef = NULL;
@@ -68,10 +68,16 @@ testCompareXMLToDomConfig(const char *xmlfile,
  libxl_domain_config_init();
  libxl_domain_config_init();
  
+if (!(cfg = libxlDriverConfigNew()))

+goto cleanup;
+
  if (!(log = (xentoollog_logger *)xtl_createlogger_stdiostream(stderr, 
XTL_DEBUG, 0)))
  goto cleanup;
  
-if (libxl_ctx_alloc(, LIBXL_VERSION, 0, log) < 0)

+/* replace logger with stderr one */
+libxl_ctx_free(cfg->ctx);
+
+if (libxl_ctx_alloc(>ctx, LIBXL_VERSION, 0, log) < 0)
  goto cleanup;
  
  if (!(gports = virPortAllocatorNew("vnc", 5900, 6000,

@@ -85,22 +91,22 @@ testCompareXMLToDomConfig(const char *xmlfile,
  NULL, VIR_DOMAIN_XML_INACTIVE)))
  goto cleanup;
  
-if (libxlBuildDomainConfig(gports, vmdef, NULL, ctx, caps, ) < 0)

+if (libxlBuildDomainConfig(gports, vmdef, NULL, cfg, caps, ) 
< 0)
  goto cleanup;
  
-if (!(actualjson = 

[libvirt] [PATCH v4 2/8] libxl: pass driver config to libxlMakeDomBuildInfo

2018-02-08 Thread Marek Marczykowski-Górecki
Preparation for global nestedhvm configuration - libxlMakeDomBuildInfo
needs access to libxlDriverConfig.
No functional change.

Adjusting tests require slightly more mockup functions, because of
libxlDriverConfigNew() call.

---
Changes since v3:
 - new patch, preparation
---
 src/libxl/libxl_conf.c |  8 +---
 src/libxl/libxl_conf.h |  2 +-
 src/libxl/libxl_domain.c   |  2 +-
 tests/libxlxml2domconfigtest.c | 20 +---
 tests/virmocklibxl.c   | 25 +
 5 files changed, 45 insertions(+), 12 deletions(-)

diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
index 2d2a707..8cced29 100644
--- a/src/libxl/libxl_conf.c
+++ b/src/libxl/libxl_conf.c
@@ -271,10 +271,11 @@ libxlMakeChrdevStr(virDomainChrDefPtr def, char **buf)
 
 static int
 libxlMakeDomBuildInfo(virDomainDefPtr def,
-  libxl_ctx *ctx,
+  libxlDriverConfigPtr cfg,
   virCapsPtr caps,
   libxl_domain_config *d_config)
 {
+libxl_ctx *ctx = cfg->ctx;
 libxl_domain_build_info *b_info = _config->b_info;
 int hvm = def->os.type == VIR_DOMAIN_OSTYPE_HVM;
 size_t i;
@@ -2288,16 +2289,17 @@ int
 libxlBuildDomainConfig(virPortAllocatorPtr graphicsports,
virDomainDefPtr def,
const char *channelDir LIBXL_ATTR_UNUSED,
-   libxl_ctx *ctx,
+   libxlDriverConfigPtr cfg,
virCapsPtr caps,
libxl_domain_config *d_config)
 {
+libxl_ctx *ctx = cfg->ctx;
 libxl_domain_config_init(d_config);
 
 if (libxlMakeDomCreateInfo(ctx, def, _config->c_info) < 0)
 return -1;
 
-if (libxlMakeDomBuildInfo(def, ctx, caps, d_config) < 0)
+if (libxlMakeDomBuildInfo(def, cfg, caps, d_config) < 0)
 return -1;
 
 #ifdef LIBXL_HAVE_VNUMA
diff --git a/src/libxl/libxl_conf.h b/src/libxl/libxl_conf.h
index 264df11..8eefe06 100644
--- a/src/libxl/libxl_conf.h
+++ b/src/libxl/libxl_conf.h
@@ -216,7 +216,7 @@ int
 libxlBuildDomainConfig(virPortAllocatorPtr graphicsports,
virDomainDefPtr def,
const char *channelDir LIBXL_ATTR_UNUSED,
-   libxl_ctx *ctx,
+   libxlDriverConfigPtr cfg,
virCapsPtr caps,
libxl_domain_config *d_config);
 
diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c
index 395c8a9..0a60444 100644
--- a/src/libxl/libxl_domain.c
+++ b/src/libxl/libxl_domain.c
@@ -1253,7 +1253,7 @@ libxlDomainStart(libxlDriverPrivatePtr driver,
 goto cleanup_dom;
 
 if (libxlBuildDomainConfig(driver->reservedGraphicsPorts, vm->def,
-   cfg->channelDir, cfg->ctx, cfg->caps, 
_config) < 0)
+   cfg->channelDir, cfg, cfg->caps, _config) < 0)
 goto cleanup_dom;
 
 if (cfg->autoballoon && libxlDomainFreeMem(cfg->ctx, _config) < 0)
diff --git a/tests/libxlxml2domconfigtest.c b/tests/libxlxml2domconfigtest.c
index bd4c3af..0105550 100644
--- a/tests/libxlxml2domconfigtest.c
+++ b/tests/libxlxml2domconfigtest.c
@@ -56,8 +56,8 @@ testCompareXMLToDomConfig(const char *xmlfile,
 int ret = -1;
 libxl_domain_config actualconfig;
 libxl_domain_config expectconfig;
+libxlDriverConfigPtr cfg;
 xentoollog_logger *log = NULL;
-libxl_ctx *ctx = NULL;
 virPortAllocatorPtr gports = NULL;
 virDomainXMLOptionPtr xmlopt = NULL;
 virDomainDefPtr vmdef = NULL;
@@ -68,10 +68,16 @@ testCompareXMLToDomConfig(const char *xmlfile,
 libxl_domain_config_init();
 libxl_domain_config_init();
 
+if (!(cfg = libxlDriverConfigNew()))
+goto cleanup;
+
 if (!(log = (xentoollog_logger *)xtl_createlogger_stdiostream(stderr, 
XTL_DEBUG, 0)))
 goto cleanup;
 
-if (libxl_ctx_alloc(, LIBXL_VERSION, 0, log) < 0)
+/* replace logger with stderr one */
+libxl_ctx_free(cfg->ctx);
+
+if (libxl_ctx_alloc(>ctx, LIBXL_VERSION, 0, log) < 0)
 goto cleanup;
 
 if (!(gports = virPortAllocatorNew("vnc", 5900, 6000,
@@ -85,22 +91,22 @@ testCompareXMLToDomConfig(const char *xmlfile,
 NULL, VIR_DOMAIN_XML_INACTIVE)))
 goto cleanup;
 
-if (libxlBuildDomainConfig(gports, vmdef, NULL, ctx, caps, ) 
< 0)
+if (libxlBuildDomainConfig(gports, vmdef, NULL, cfg, caps, ) 
< 0)
 goto cleanup;
 
-if (!(actualjson = libxl_domain_config_to_json(ctx, ))) {
+if (!(actualjson = libxl_domain_config_to_json(cfg->ctx, ))) {
 virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
"Failed to retrieve JSON doc for libxl_domain_config");
 goto cleanup;
 }
 
 virTestLoadFile(jsonfile, );
-if (libxl_domain_config_from_json(ctx, , tempjson) != 0) {
+if (libxl_domain_config_from_json(cfg->ctx, , tempjson) != 0) 
{