From 28f657a6bea4ad803f036dd8ed2ec6b356896a72 Mon Sep 17 00:00:00 2001 From: Konstantina Chremmou Date: Tue, 4 Mar 2014 08:45:50 +0000 Subject: [PATCH 1/3] CA-127849: Fixed bug in the C SDK autogeneration code which was causing the call xen__xen__record_map_free to crash. Also added a simple test. Signed-off-by: Konstantina Chremmou --- c/Makefile.dist | 2 +- c/gen_c_binding.ml | 46 +++----- c/test/test_get_records.c | 223 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 241 insertions(+), 30 deletions(-) create mode 100644 c/test/test_get_records.c diff --git a/c/Makefile.dist b/c/Makefile.dist index 117848e..4b48a0f 100644 --- a/c/Makefile.dist +++ b/c/Makefile.dist @@ -55,7 +55,7 @@ LIBXENAPI_OBJS = $(patsubst %.c, %.o, $(wildcard src/*.c)) TEST_PROGRAMS = test/test_vm_ops test/test_event_handling \ test/test_failures test/test_vm_async_migrate \ - test/test_enumerate + test/test_enumerate test/test_get_records TARBALL_DEST = lib@LIB_NAME@-$(MAJOR).$(MINOR) diff --git a/c/gen_c_binding.ml b/c/gen_c_binding.ml index 86bf2e7..b69a7aa 100644 --- a/c/gen_c_binding.ml +++ b/c/gen_c_binding.ml @@ -865,8 +865,8 @@ extern %s * and write_map_impl name l r out_chan = let print format = fprintf out_chan format in let tn = typename name in - let l_free_impl = free_impl "map->contents[i].key" l in - let r_free_impl = free_impl "map->contents[i].val" r in + let l_free_impl = free_impl "map->contents[i].key" false l in + let r_free_impl = free_impl "map->contents[i].val" true r in let needed = ref StringSet.empty in find_needed'' needed l; find_needed'' needed r; @@ -1242,42 +1242,30 @@ and find_needed'' needed = function () and record_free_impl prefix = function - Field fr -> - free_impl (prefix ^ (fieldname fr.field_name)) fr.ty + | Field fr -> free_impl (prefix ^ (fieldname fr.field_name)) true fr.ty + | Namespace (p, c) -> joined "\n " (record_free_impl (prefix ^ (fieldname p) ^ "_")) c - | Namespace (p, c) -> - joined "\n " - (record_free_impl (prefix ^ (fieldname p) ^ "_")) c - -and free_impl val_name = function - | String -> sprintf "free(%s);" val_name +and free_impl val_name record = function + | String -> sprintf "free(%s);" val_name | Int | Float | Bool | DateTime - | Enum (_, _) -> - "" - | Ref n -> - sprintf "%s_free(%s);" (record_opt_typename n) val_name - | Set(Ref n) -> - sprintf "%s_opt_set_free(%s);" (record_typename n) val_name - | Set(Enum (e, _)) -> - sprintf "%s_set_free(%s);" (typename e) val_name - | Set(String) -> - sprintf "xen_string_set_free(%s);" val_name - | Map(l, r) -> - let n = mapname l r in - sprintf "%s_free(%s);" (typename n) val_name - | Record x -> sprintf "%s_free(%s);" (record_typename x) val_name - | _ -> "DONT_KNOW" + | Enum (_, _) -> "" + | Ref n -> sprintf "%s_free(%s);" (if record then record_opt_typename n else typename n) val_name + | Set(Ref n) -> sprintf "%s_opt_set_free(%s);" (record_typename n) val_name + | Set(Enum (e, _)) -> sprintf "%s_set_free(%s);" (typename e) val_name + | Set(String) -> sprintf "xen_string_set_free(%s);" val_name + | Map(l, r) -> let n = mapname l r in + sprintf "%s_free(%s);" (typename n) val_name + | Record x -> sprintf "%s_free(%s);" (record_typename x) val_name + | _ -> "DONT_KNOW" and add_enum_internal needed = function - Enum(x, _) -> - StringSet.add (x ^ "_internal") needed - | _ -> - needed + | Enum(x, _) -> StringSet.add (x ^ "_internal") needed + | _ -> needed and add_enum_map_internal needed l r = diff --git a/c/test/test_get_records.c b/c/test/test_get_records.c new file mode 100644 index 0000000..3b08e5f --- /dev/null +++ b/c/test/test_get_records.c @@ -0,0 +1,223 @@ +/* + * Copyright (c) Citrix Systems, 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: + * + * 1) Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2) 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. + * + * 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. + */ + +#define _GNU_SOURCE +#include +#include +#include +#include +#include + +#include +#include +#include + + +static void usage() +{ + fprintf(stderr, +"Usage:\n" +"\n" +" test_get_records \n" +"\n" +"where\n" +" is the server's URL, e.g. https://server.example.com\n" +" is the username to use at the server; and\n" +" is the password.\n"); + + exit(EXIT_FAILURE); +} + + +static char *url; + + +typedef struct +{ + xen_result_func func; + void *handle; +} xen_comms; + + +static size_t +write_func(void *ptr, size_t size, size_t nmemb, xen_comms *comms) +{ + size_t n = size * nmemb; +#ifdef PRINT_XML + printf("\n\n---Result from server -----------------------\n"); + printf("%s\n",((char*) ptr)); + fflush(stdout); +#endif + return comms->func(ptr, n, comms->handle) ? n : 0; +} + + +static int +call_func(const void *data, size_t len, void *user_handle, + void *result_handle, xen_result_func result_func) +{ + (void)user_handle; + +#ifdef PRINT_XML + printf("\n\n---Data to server: -----------------------\n"); + printf("%s\n",((char*) data)); + fflush(stdout); +#endif + + CURL *curl = curl_easy_init(); + if (!curl) { + return -1; + } + + xen_comms comms = { + .func = result_func, + .handle = result_handle + }; + + curl_easy_setopt(curl, CURLOPT_URL, url); + curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1); +#ifdef CURLOPT_MUTE + curl_easy_setopt(curl, CURLOPT_MUTE, 1); +#endif + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &write_func); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, &comms); + curl_easy_setopt(curl, CURLOPT_POST, 1); + curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data); + curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, len); + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0); + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0); + + CURLcode result = curl_easy_perform(curl); + + curl_easy_cleanup(curl); + + return result; +} + + +static void print_error(xen_session *session) +{ + fprintf(stderr, "Error: %d", session->error_description_count); + for (int i = 0; i < session->error_description_count; i++) + { + fprintf(stderr, "%s ", session->error_description[i]); + } + fprintf(stderr, "\n"); +} + + +int main(int argc, char **argv) +{ + if (argc != 4) + usage(); + + url = argv[1]; + char *username = argv[2]; + char *password = argv[3]; + + xmlInitParser(); + xen_init(); + curl_global_init(CURL_GLOBAL_ALL); + +#define CLEANUP \ + do { \ + xen_session_logout(session); \ + curl_global_cleanup(); \ + xen_fini(); \ + xmlCleanupParser(); \ + } while(0) \ + + + xen_session *session = xen_session_login_with_password(call_func, NULL, + username, password, xen_api_latest_version); + + + /* Print some info for hosts */ + + xen_host_xen_host_record_map *hostRecords; + if (!xen_host_get_all_records(session, &hostRecords)) + { + print_error(session); + CLEANUP; + return 1; + } + + for (size_t i = 0; i < hostRecords->size; i++) + { + xen_host_record *rec = hostRecords->contents[i].val; + printf("Host: %s, edition: %s\n", rec->name_label, rec->edition); + } + + xen_host_xen_host_record_map_free(hostRecords); + + /* Print some info for templates */ + + xen_vm_xen_vm_record_map *vmRecords; + if (!xen_vm_get_all_records(session, &vmRecords)) + { + print_error(session); + CLEANUP; + return 1; + } + + for (size_t i = 0; i < vmRecords->size; i++) + { + xen_vm_record *rec = vmRecords->contents[i].val; + if (!rec->is_a_template) + continue; + + printf("VM: %s, vCPUs max: %" PRId64 "\n", rec->name_label, rec->vcpus_max); + } + + xen_vm_xen_vm_record_map_free(vmRecords); + + /* Print some info for storage repositories */ + + xen_sr_xen_sr_record_map *srRecords; + if (!xen_sr_get_all_records(session, &srRecords)) + { + print_error(session); + CLEANUP; + return 1; + } + + for (size_t i = 0; i < srRecords->size; i++) + { + xen_sr_record *rec = srRecords->contents[i].val; + printf("SR: %s -> Free space: %" PRId64 "\n", + rec->name_label, + rec->physical_size - rec->physical_utilisation); + } + + xen_sr_xen_sr_record_map_free(srRecords); + + CLEANUP; + return 0; +} From 86206b3820238696f0e929a4921ae34f55f07327 Mon Sep 17 00:00:00 2001 From: Konstantina Chremmou Date: Tue, 4 Mar 2014 09:48:46 +0000 Subject: [PATCH 2/3] More flexible versioning of the SDK. Added ability to override the product micro version as obtained from branding. Corrected all in-code mentions of the SDK zip file name. Signed-off-by: Konstantina Chremmou --- OMakefile | 10 +++++----- c/OMakefile | 2 +- c/README.dist | 6 +++--- csharp/README-common.txt.dist | 6 +++--- java/OMakefile | 2 +- java/README.dist | 6 +++--- java/lib/Makefile.dist | 2 +- java/lib/com/xensource/xenapi/Connection.java | 2 +- mk/Makefile | 20 ++++++++++++++++--- powershell/README.txt.dist | 6 +++--- powershell/XenServerPSModule.psd1 | 2 +- powershell/about_XenServer.help.txt | 2 +- 12 files changed, 40 insertions(+), 26 deletions(-) diff --git a/OMakefile b/OMakefile index 30298bc..de9ffa0 100644 --- a/OMakefile +++ b/OMakefile @@ -62,14 +62,14 @@ ZipUp(dir, dest) = cd $(dir)/.. && zip -q -r9 $(d) $(basename $(dir)) && mv $(d) $(dest) CSharpReadme(dir, specific) = - sed -e 's/@PRODUCT_VERSION@/$(PRODUCT_VERSION)/g' csharp/README-common.txt.dist >$(dir)/README.txt + sed -e 's/@SDK_VERSION@/$(SDK_VERSION)/g' csharp/README-common.txt.dist >$(dir)/README.txt cat csharp/README-$(specific).txt.dist >>$(dir)/README.txt $(INSTALL) $(XMLRPCLICENSE) $(dir)/LICENSE.CookComputing.XmlRpcV2 $(INSTALL) LICENSE $(dir)/LICENSE.txt InstallAndBrand(sourcefile, targetfile) = $(INSTALL) $(sourcefile) $(targetfile) - sed -i -e 's/@PRODUCT_VERSION@/$(PRODUCT_VERSION)/g' $(targetfile) + sed -i -e 's/@SDK_VERSION@/$(SDK_VERSION)/g' $(targetfile) csharp_src: gen_gui_csharp_bindings mkdir -p $(CSHARP_SRC_TMP)/Properties @@ -79,7 +79,7 @@ csharp_src: gen_gui_csharp_bindings $(INSTALL) $(CSHARP_GEN)/FriendlyErrorNames.resx $(CSHARP_SRC_TMP) $(INSTALL) $(SUPPORT_CS) $(CSHARP_SRC_TMP) mv $(CSHARP_SRC_TMP)/AssemblyInfo.cs $(CSHARP_SRC_TMP)/Properties/AssemblyInfo.cs - sed -i -e 's/1\.0\.0\.0/$(PRODUCT_VERSION).0/g' $(CSHARP_SRC_TMP)/Properties/AssemblyInfo.cs + sed -i -e 's/1\.0\.0\.0/$(SDK_VERSION).0/g' $(CSHARP_SRC_TMP)/Properties/AssemblyInfo.cs mv $(CSHARP_GEN)/XenObjectDownloader.tmp $(CSHARP_GEN)/XenObjectDownloader.cs CSharpReadme($(CSHARP_SRC_TMP), src) Flip($(CSHARP_SRC_TMP)) @@ -110,8 +110,8 @@ $(BINDINGS_TMP)/XenCenterBindings.zip: gen_gui_csharp_bindings powershell_src: csharp_src gen_powershell_bindings mkdir -p $(POWERSHELL_TMP) $(INSTALL) powershell/src/*.cs $(POWERSHELL_TMP) - sed -i -e 's/1\.0\.0\.0/$(PRODUCT_VERSION)/g' $(POWERSHELL_TMP)/AssemblyInfo.cs - sed -i -e 's/1000/$(PRODUCT_VERSION).0/g' $(POWERSHELL_TMP)/AssemblyInfo.cs + sed -i -e 's/1\.0\.0\.0/$(SDK_VERSION)/g' $(POWERSHELL_TMP)/AssemblyInfo.cs + sed -i -e 's/1000/$(SDK_VERSION).0/g' $(POWERSHELL_TMP)/AssemblyInfo.cs $(INSTALL) $(POWERSHELL_GEN)/* $(POWERSHELL_TMP) InstallAndBrand(powershell/README.txt.dist, $(POWERSHELL_TMP)/README.txt) InstallAndBrand(powershell/about_XenServer.help.txt, $(POWERSHELL_TMP)/about_XenServer.help.txt) diff --git a/c/OMakefile b/c/OMakefile index 569c91c..d7ab5ba 100644 --- a/c/OMakefile +++ b/c/OMakefile @@ -69,7 +69,7 @@ c_source: gen_c_binding cp $(C_GEN_FOLDER)/*.c $(C_SRC_TMP_FOLDER)/src sed -e s/@LIB_MAJOR@/$(API_MAJOR)/g -e s/@LIB_MINOR@/$(API_MINOR)/g -e s/@LIB_NAME@/xenserver/g Makefile.dist > $(C_SRC_TMP_FOLDER)/Makefile cp ../LICENSE $(C_SRC_TMP_FOLDER)/COPYING - sed -e 's/@PRODUCT_VERSION@/$(PRODUCT_VERSION)/g' README.dist >$(C_SRC_TMP_FOLDER)/README + sed -e 's/@SDK_VERSION@/$(SDK_VERSION)/g' README.dist >$(C_SRC_TMP_FOLDER)/README cp xen_internal.h $(C_SRC_TMP_FOLDER)/include cp xen_common.h xen_string_set.h $(C_SRC_TMP_FOLDER)/include/xen/api cp xen_common.c xen_string_set.c $(C_SRC_TMP_FOLDER)/src diff --git a/c/README.dist b/c/README.dist index 5eeb43d..fb4ec24 100644 --- a/c/README.dist +++ b/c/README.dist @@ -1,7 +1,7 @@ libxenserver ============ -Version @PRODUCT_VERSION@ +Version @SDK_VERSION@ libxenserver is a complete SDK for Citrix XenServer, exposing the XenServer API to C programmers. @@ -47,13 +47,13 @@ On Debian, these are packaged as libxml2-dev and libcurl3-dev. Downloads --------- -libxenserver is available in the XenServer-@PRODUCT_VERSION@-SDK.zip in two separate +libxenserver is available in the XenServer-SDK-@SDK_VERSION@.zip in two separate folders, one for the compiled binaries, and one for the source code. The binaries are compiled for the XenServer SDK virtual machine, and we recommend compiling from source if you wish to use the library in a different environment. -The XenServer-@PRODUCT_VERSION@-SDK.zip is available from +The XenServer-SDK-@SDK_VERSION@.zip is available from http://www.citrix.com/downloads/xenserver/. diff --git a/csharp/README-common.txt.dist b/csharp/README-common.txt.dist index 1ceffda..0459ca5 100644 --- a/csharp/README-common.txt.dist +++ b/csharp/README-common.txt.dist @@ -1,7 +1,7 @@ XenServer.NET ============= -Version @PRODUCT_VERSION@ +Version @SDK_VERSION@ XenServer.NET is a complete SDK for Citrix XenServer, exposing the XenServer API as .NET classes. It is written in C#. @@ -37,11 +37,11 @@ LICENSE.CookComputing.XmlRpcV2 for details. Downloads --------- -XenServer.NET is available in the XenServer-@PRODUCT_VERSION@-SDK.zip in three separate +XenServer.NET is available in the XenServer-SDK-@SDK_VERSION@.zip in three separate folders, one for the compiled binaries, one for the source code, and one containing sample code. -The XenServer-@PRODUCT_VERSION@-SDK.zip is available from +The XenServer-SDK-@SDK_VERSION@.zip is available from http://www.citrix.com/downloads/xenserver/. XML-RPC.NET is available from http://www.xml-rpc.net. diff --git a/java/OMakefile b/java/OMakefile index 84b7374..2434e25 100644 --- a/java/OMakefile +++ b/java/OMakefile @@ -56,7 +56,7 @@ Empty(dirs) = Brand(src, dst) = mkdir -p $(JAVATMP_DIR) - sed -e 's/@PRODUCT_VERSION@/$(PRODUCT_VERSION)/g' $(src) >$(JAVATMP_DIR)/t-$(basename $(dst)) + sed -e 's/@SDK_VERSION@/$(SDK_VERSION)/g' $(src) >$(JAVATMP_DIR)/t-$(basename $(dst)) $(INSTALL) $(JAVATMP_DIR)/t-$(basename $(dst)) $(dst) diff --git a/java/README.dist b/java/README.dist index 2b498a1..ef985a2 100644 --- a/java/README.dist +++ b/java/README.dist @@ -1,7 +1,7 @@ XenServerJava ============= -Version @PRODUCT_VERSION@ +Version @SDK_VERSION@ XenServerJava is a complete SDK for Citrix XenServer, exposing the XenServer API as Java classes. @@ -41,11 +41,11 @@ We recommend that you use these versions, though others may work. Downloads --------- -XenServerJava is available in the XenServer-@PRODUCT_VERSION@-SDK.zip in three separate +XenServerJava is available in the XenServer-SDK-@SDK_VERSION@.zip in three separate folders, one for the compiled binaries, one for the source code, and one containing sample code. -The XenServer-@PRODUCT_VERSION@-SDK.zip is available from +The XenServer-SDK-@SDK_VERSION@.zip is available from http://www.citrix.com/downloads/xenserver/. Apache XML-RPC is available from http://ws.apache.org/xmlrpc/. diff --git a/java/lib/Makefile.dist b/java/lib/Makefile.dist index 1c1e030..5b9ef95 100644 --- a/java/lib/Makefile.dist +++ b/java/lib/Makefile.dist @@ -32,7 +32,7 @@ BINDINGJAVAFILES := $(wildcard com/xensource/xenapi/*.java) BINDINGCLASSFILES := $(BINDINGJAVAFILES:.java=.class) -BINDINGJAR := xenserver-@PRODUCT_VERSION@.jar +BINDINGJAR := xenserver-@SDK_VERSION@.jar CLASSPATH := :xmlrpc-client-3.1.jar:xmlrpc-common-3.1.jar:ws-commons-util-1.0.2.jar EXAMPLECLASSPATH := :$(BINDINGJAR)$(CLASSPATH) diff --git a/java/lib/com/xensource/xenapi/Connection.java b/java/lib/com/xensource/xenapi/Connection.java index d822057..11b7871 100644 --- a/java/lib/com/xensource/xenapi/Connection.java +++ b/java/lib/com/xensource/xenapi/Connection.java @@ -54,7 +54,7 @@ public class Connection /** * The version of the bindings that this class belongs to. */ - public static final String BINDINGS_VERSION = "@PRODUCT_VERSION@"; + public static final String BINDINGS_VERSION = "@SDK_VERSION@"; private APIVersion apiVersion; diff --git a/mk/Makefile b/mk/Makefile index c5ca7c9..ab06bd2 100644 --- a/mk/Makefile +++ b/mk/Makefile @@ -28,6 +28,12 @@ # OF THE POSSIBILITY OF SUCH DAMAGE. # +#============================================================== +#Micro version override - please keep at the top of the script +#============================================================== +#Uncomment and set to override the micro version obtained from branding +#SDK_MICRO_VERSION_OVERRIDE = + USE_BRANDING := yes USE_BUILD_NUMBER := yes IMPORT_BRANDING := yes @@ -37,6 +43,14 @@ include $(B_BASE)/winbuild.mk INSTALL=install -m 644 -o root -g root +SDK_MICRO_VERSION = $(PRODUCT_MICRO_VERSION) + +ifneq ($(SDK_MICRO_VERSION_OVERRIDE),) + SDK_MICRO_VERSION = $(SDK_MICRO_VERSION_OVERRIDE) +endif + +SDK_VERSION = $(PRODUCT_MAJOR_VERSION).$(PRODUCT_MINOR_VERSION).$(SDK_MICRO_VERSION) + REPONAME=xen-api-sdk REPO=$(call git_loc,$(REPONAME)) BINDINGS_TMP=$(MY_OBJ_DIR)/tmp @@ -64,7 +78,7 @@ API_PYTHON=$(API_SRC)/xen-api-src/scripts/examples/python PYTHON_FILES=XenAPI.py provision.py PYTHON_SAMPLES=install.py powercycle.py permute.py vm_start_async.py watch-all-events.py fixpbds.py shell.py license.py -SDK_ZIP=XenServer-SDK-$(PRODUCT_VERSION).zip +SDK_ZIP=XenServer-SDK-$(SDK_VERSION).zip SDK_ZIP_LN=XenServer-SDK.zip SDK_FOLDER=$(MY_OUTPUT_DIR)/XenServer-SDK SDK_NET_FOLDER=$(SDK_FOLDER)/XenServer.NET @@ -72,7 +86,7 @@ SDK_PS_FOLDER=$(SDK_FOLDER)/XenServerPowerShell SDK_PY_FOLDER=$(SDK_FOLDER)/XenServerPython SDK_PY_FOLDER_SAMPLES=$(SDK_PY_FOLDER)/samples -export PRODUCT_VERSION +export SDK_VERSION export PROJECT_OUTPUTDIR export MY_OUTPUT_DIR export BINDINGS_TMP @@ -135,7 +149,7 @@ powershell-module: $(MY_OBJ_DIR)/XenServerPowerShell.dll mkdir -p $(SDK_PS_FOLDER)/XenServerPSModule cp $(MY_OBJ_DIR)/{*.dll,*.ps1xml} $(SDK_PS_FOLDER)/XenServerPSModule cp $(MY_OBJ_DIR)/Initialize-Environment.ps1 $(SDK_PS_FOLDER)/XenServerPSModule - sed -e 's/@PRODUCT_VERSION@/$(PRODUCT_VERSION)/g' \ + sed -e 's/@SDK_VERSION@/$(SDK_VERSION)/g' \ -e 's/@PRODUCT_GUID@/$(PRODUCT_GUID)/g' \ $(REPO)/powershell/XenServerPSModule.psd1 > $(SDK_PS_FOLDER)/XenServerPSModule/XenServerPSModule.psd1 cp $(SDK_PS_FOLDER)/src/*.txt $(SDK_PS_FOLDER)/XenServerPSModule diff --git a/powershell/README.txt.dist b/powershell/README.txt.dist index d569ac3..8a9d6ca 100644 --- a/powershell/README.txt.dist +++ b/powershell/README.txt.dist @@ -1,7 +1,7 @@ Citrix XenServer PowerShell Module ================================== -Version @PRODUCT_VERSION@ +Version @SDK_VERSION@ The XenServer PowerShell Module (XS-PS) is a complete SDK for Citrix XenServer, exposing the XenServer API as Windows PowerShell 2.0 cmdlets. @@ -36,11 +36,11 @@ LICENSE.CookComputing.XmlRpcV2 for details. Downloads --------- -The XenServer PowerShell Module is available in the XenServer-@PRODUCT_VERSION@-SDK.zip. +The XenServer PowerShell Module is available in the XenServer-SDK-@SDK_VERSION@.zip. The source code and sample code can be found in two separate folders in the same zip file. -The XenServer-@PRODUCT_VERSION@-SDK.zip is available from +The XenServer-SDK-@SDK_VERSION@.zip is available from http://www.citrix.com/downloads/xenserver/. XML-RPC.NET is available from http://www.xml-rpc.net. diff --git a/powershell/XenServerPSModule.psd1 b/powershell/XenServerPSModule.psd1 index 2046cc3..da27e34 100755 --- a/powershell/XenServerPSModule.psd1 +++ b/powershell/XenServerPSModule.psd1 @@ -31,7 +31,7 @@ @{ #Module Info -ModuleVersion = '@PRODUCT_VERSION@' +ModuleVersion = '@SDK_VERSION@' Description = 'XenServer PowerShell Module' GUID = '@PRODUCT_GUID@' diff --git a/powershell/about_XenServer.help.txt b/powershell/about_XenServer.help.txt index 0f92c61..998904e 100755 --- a/powershell/about_XenServer.help.txt +++ b/powershell/about_XenServer.help.txt @@ -1,5 +1,5 @@ -XenServer PowerShell Module v@PRODUCT_VERSION@ +XenServer PowerShell Module v@SDK_VERSION@ ---------------------------------- For specific help with any command use: From 4cbdd407de5f3ff45794632c8483a009d20ccad4 Mon Sep 17 00:00:00 2001 From: Konstantina Chremmou Date: Tue, 4 Mar 2014 10:25:58 +0000 Subject: [PATCH 3/3] Updated Changelog. Signed-off-by: Konstantina Chremmou --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cdc78aa..e570d22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +1.2.0 (4 Mar 2014) +------------------ + +* Java SDK: generate automatically overloads for methods with changed signature + for compatibility with older servers. Other smaller enhancements. +* C# SDK: added xml documentation. Overloads for methods with changed signature + are now generated automatically. +* Fixes for build system changes. +* Corrections to the versioning of the SDK. +* Bugs fixed: CA-111642, CA-112409, CA-121354, CA-121355, CA-124147, CA-125856, + CA-126990, CA-127849. + 1.1.0 (23 Jul 2013) -------------------