Skip to content
This repository was archived by the owner on Feb 19, 2025. It is now read-only.

Commit 5a6e3fb

Browse files
author
Konstantina Chremmou
committed
Merge pull request #18 from kc284/xs64bit
Port changes from fox.
2 parents 4279c8a + fc97e0c commit 5a6e3fb

File tree

15 files changed

+153
-127
lines changed

15 files changed

+153
-127
lines changed

CommonFunctions.ml

Lines changed: 49 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ open Datamodel_types
3333
module DT = Datamodel_types
3434

3535
let rec list_distinct list =
36-
match list with
37-
| [] -> []
36+
match list with
37+
| [] -> []
3838
| [x] -> [x]
3939
| hd1::(hd2::_ as tl) -> if hd1 = hd2 then list_distinct tl
4040
else hd1::(list_distinct tl)
@@ -54,9 +54,9 @@ and list_index_of x list =
5454
with Not_found -> -1
5555

5656
and list_is_empty list =
57-
match list with
58-
| [] -> true
59-
| _ -> false
57+
match list with
58+
| [] -> true
59+
| _ -> false
6060

6161
let rec gen_param_groups_for_releases releaseOrder params =
6262
match releaseOrder with
@@ -74,6 +74,7 @@ and get_method_params_list message =
7474
else List.tl message.msg_params
7575

7676
and gen_param_groups message params =
77+
let expRelease = get_prototyped_release message.msg_lifecycle in
7778
let msgRelease = get_first_release message.msg_release.internal in
7879
let msgReleaseIndex = list_index_of msgRelease DT.release_order in
7980
let paramGroups = gen_param_groups_for_releases DT.release_order params in
@@ -85,27 +86,30 @@ and gen_param_groups message params =
8586
valid::(getValid tl)
8687
in
8788
let filteredGroups = List.filter (fun x -> match x with | [] -> false | _ -> true) (getValid paramGroups) in
88-
list_distinct filteredGroups
89+
if (not (expRelease = "")) then
90+
[params]
91+
else
92+
list_distinct filteredGroups
8993

9094
and get_release_name release =
91-
if release = rel_rio then "XenServer 4.0"
92-
else if release = rel_miami then "XenServer 4.1"
93-
else if release = rel_symc then "XenServer 4.1.1"
94-
else if release = rel_orlando then "XenServer 5.0"
95-
else if release = rel_orlando_update_1 then "XenServer 5.0 Update 1"
96-
else if release = rel_george then "XenServer 5.5"
97-
else if release = rel_midnight_ride then "XenServer 5.6"
98-
else if release = rel_cowley then "XenServer 5.6 FP1"
99-
else if release = rel_boston then "XenServer 6.0"
100-
else if release = rel_tampa then "XenServer 6.1"
101-
else if release = rel_clearwater then "XenServer 6.2"
102-
else if release = rel_vgpu_tech_preview then "XenServer 6.2 SP1 Tech-Preview"
103-
else if release = rel_vgpu_productisation then "XenServer 6.2 SP1"
104-
else if release = rel_augusta then "Unreleased"
105-
else ""
95+
if release = rel_rio then "XenServer 4.0"
96+
else if release = rel_miami then "XenServer 4.1"
97+
else if release = rel_symc then "XenServer 4.1.1"
98+
else if release = rel_orlando then "XenServer 5.0"
99+
else if release = rel_orlando_update_1 then "XenServer 5.0 Update 1"
100+
else if release = rel_george then "XenServer 5.5"
101+
else if release = rel_midnight_ride then "XenServer 5.6"
102+
else if release = rel_cowley then "XenServer 5.6 FP1"
103+
else if release = rel_boston then "XenServer 6.0"
104+
else if release = rel_tampa then "XenServer 6.1"
105+
else if release = rel_clearwater then "XenServer 6.2"
106+
else if release = rel_vgpu_tech_preview then "XenServer 6.2 SP1 Tech-Preview"
107+
else if release = rel_vgpu_productisation then "XenServer 6.2 SP1"
108+
else if release = rel_clearwater_felton then "XenServer 6.2 SP1 Hotfix XS62ESP1004"
109+
else ""
106110

107111
and get_first_release releases =
108-
let filtered = List.filter (fun x -> List.mem x releases) DT.release_order in
112+
let filtered = List.filter (fun x -> List.mem x releases) DT.release_order in
109113
match filtered with
110114
| [] -> ""
111115
| hd::tl -> hd
@@ -114,34 +118,50 @@ and get_first_release_string release =
114118
if release = "" then ""
115119
else sprintf "First published in %s." (get_release_name release)
116120

121+
and get_prototyped_release lifecycle =
122+
match lifecycle with
123+
| [Prototyped, release, doc] -> release
124+
| _ -> ""
125+
126+
and get_prototyped_release_string lifecycle =
127+
match lifecycle with
128+
| [Prototyped, release, doc] -> "Experimental. "^(get_first_release_string release)
129+
| _ -> ""
130+
117131
and get_published_info_message message cls =
132+
let expRelease = get_prototyped_release_string message.msg_lifecycle in
118133
let clsRelease = get_first_release cls.obj_release.internal in
119134
let msgRelease = get_first_release message.msg_release.internal in
120135
let clsReleaseIndex = list_index_of clsRelease DT.release_order in
121-
let msgReleaseIndex = list_index_of msgRelease DT.release_order in
122-
if (not (clsReleaseIndex = -1)) && (not (msgReleaseIndex = -1)) && (clsReleaseIndex < msgReleaseIndex) then
136+
let msgReleaseIndex = list_index_of msgRelease DT.release_order in
137+
if (not (expRelease = "")) then
138+
expRelease
139+
else if (not (clsReleaseIndex = -1)) && (not (msgReleaseIndex = -1)) && (clsReleaseIndex < msgReleaseIndex) then
123140
get_first_release_string msgRelease
124141
else
125142
get_first_release_string clsRelease
126143

127144
and get_published_info_param message param =
128-
let msgRelease = get_first_release message.msg_release.internal in
129-
let paramRelease = get_first_release param.param_release.internal in
145+
let msgRelease = get_first_release message.msg_release.internal in
146+
let paramRelease = get_first_release param.param_release.internal in
130147
let msgReleaseIndex = list_index_of msgRelease DT.release_order in
131148
let paramReleaseIndex = list_index_of paramRelease DT.release_order in
132149
if (not (msgReleaseIndex = -1)) && (not (paramReleaseIndex = -1)) && (msgReleaseIndex < paramReleaseIndex) then
133150
get_first_release_string paramRelease
134-
else ""
151+
else ""
135152

136153
and get_published_info_class cls =
137154
get_first_release_string (get_first_release cls.obj_release.internal)
138155

139156
and get_published_info_field field cls =
157+
let expRelease = get_prototyped_release_string field.lifecycle in
140158
let clsRelease = get_first_release cls.obj_release.internal in
141159
let fieldRelease = get_first_release field.release.internal in
142160
let clsReleaseIndex = list_index_of clsRelease DT.release_order in
143-
let fieldReleaseIndex = list_index_of fieldRelease DT.release_order in
144-
if (not (clsReleaseIndex = -1)) && (not (fieldReleaseIndex = -1)) && (clsReleaseIndex < fieldReleaseIndex) then
161+
let fieldReleaseIndex = list_index_of fieldRelease DT.release_order in
162+
if (not (expRelease = "")) then
163+
expRelease
164+
else if (not (clsReleaseIndex = -1)) && (not (fieldReleaseIndex = -1)) && (clsReleaseIndex < fieldReleaseIndex) then
145165
get_first_release_string fieldRelease
146166
else
147167
""

FriendlyErrorNames.resx

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,15 @@
201201
<data name="FIELD_TYPE_ERROR" xml:space="preserve">
202202
<value>One of the fields you supplied was of the wrong type.</value>
203203
</data>
204+
<data name="GPU_GROUP_CONTAINS_NO_PGPUS" xml:space="preserve">
205+
<value>The GPU group does not contain any pGPUs.</value>
206+
</data>
207+
<data name="GPU_GROUP_CONTAINS_PGPU" xml:space="preserve">
208+
<value>The GPU group contains active pGPUs and cannot be deleted.</value>
209+
</data>
210+
<data name="GPU_GROUP_CONTAINS_VGPU" xml:space="preserve">
211+
<value>The GPU group contains active vGPUs and cannot be deleted.</value>
212+
</data>
204213
<data name="HANDLE_INVALID" xml:space="preserve">
205214
<value>Object has been deleted.{0}:{1}</value>
206215
</data>
@@ -474,6 +483,15 @@
474483
<data name="PBD_EXISTS" xml:space="preserve">
475484
<value>A PBD already exists connecting the SR to the server</value>
476485
</data>
486+
<data name="PGPU_INSUFFICIENT_CAPACITY_FOR_VGPU" xml:space="preserve">
487+
<value>There is insufficient capacity on this pGPU to run the vGPU.</value>
488+
</data>
489+
<data name="PGPU_IN_USE_BY_VM" xml:space="preserve">
490+
<value>This pGPU is currently in use by running VMs.</value>
491+
</data>
492+
<data name="PGPU_NOT_COMPATIBLE_WITH_GPU_GROUP" xml:space="preserve">
493+
<value>pGPU type not compatible with destination group.</value>
494+
</data>
477495
<data name="PIF_ALREADY_BONDED" xml:space="preserve">
478496
<value>You cannot create a bond of an interface which is a member of an existing bond.</value>
479497
</data>
@@ -848,6 +866,15 @@ Authorized Roles: {1}</value>
848866
<data name="VDI_READONLY" xml:space="preserve">
849867
<value>The operation required write access but VDI {0} is read-only</value>
850868
</data>
869+
<data name="VGPU_TYPE_NOT_COMPATIBLE_WITH_RUNNING_TYPE" xml:space="preserve">
870+
<value>vGPU type is not compatible with one or more of the vGPU types currently running on this pGPU</value>
871+
</data>
872+
<data name="VGPU_TYPE_NOT_ENABLED" xml:space="preserve">
873+
<value>vGPU type is not one of the pGPU's enabled types.</value>
874+
</data>
875+
<data name="VGPU_TYPE_NOT_SUPPORTED" xml:space="preserve">
876+
<value>vGPU type is not one of the pGPU's supported types.</value>
877+
</data>
851878
<data name="VIFS_MAX_ALLOWED" xml:space="preserve">
852879
<value>You have reached the maximum number of virtual network interfaces allowed for this virtual machine.</value>
853880
</data>

OMakefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ CSHARP_GUI_TMP=$(BINDINGS_TMP)/XenCenterBindings/XenServer.NET
4141
CSHARP_SAM_TMP=$(BINDINGS_TMP)/XenServer.NET-sam/XenServer.NET
4242

4343
OCAMLINCLUDES += .. $(DATAMODEL_DIR)
44-
OCAMLFLAGS += -dtypes -I $(DATAMODEL_DIR) -thread
45-
OCAMLPACKS += rpclib getopt xmlm xml-light2 uuid stdext xcp unix str
44+
OCAMLFLAGS += -dtypes -I $(DATAMODEL_DIR)
45+
OCAMLPACKS += getopt xmlm xml-light2 uuid stdext log unix str
4646
OCAML_LIBS += $(DATAMODEL_DIR)/datamodel
4747

4848
.PHONY: clean dist

c/OMakefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
#
3030

3131
API_MAJOR=2
32-
API_MINOR=0
32+
API_MINOR=2
3333
API_VER=$(API_MAJOR).$(API_MINOR)
3434

3535
C_GEN_FOLDER=$(BINDINGS_TMP)/c_gen

c/xen_common.c

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,10 @@ xen_api_version_to_string(xen_api_version version)
192192
return "1.10";
193193
case xen_api_version_2_0:
194194
return "2.0";
195+
case xen_api_version_2_1:
196+
return "2.1";
197+
case xen_api_version_2_2:
198+
return "2.2";
195199
default:
196200
return "Unknown";
197201
}
@@ -321,9 +325,15 @@ set_api_version(xen_session *session)
321325

322326
if (major_version == (int64_t)2)
323327
{
324-
if (minor_version == (int64_t)0)
328+
if (minor_version == (int64_t)2)
329+
session->api_version = xen_api_version_2_2;
330+
331+
else if (minor_version == (int64_t)1)
332+
session->api_version = xen_api_version_2_1;
333+
334+
else if (minor_version == (int64_t)0)
325335
session->api_version = xen_api_version_2_0;
326-
336+
327337
else
328338
session->api_version = xen_api_unknown_version;
329339
}

c/xen_common.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@ typedef enum xen_api_version
7575
xen_api_version_1_9 = 9,
7676
xen_api_version_1_10 = 10,
7777
xen_api_version_2_0 = 11,
78-
xen_api_latest_version = 11,
78+
xen_api_version_2_1 = 12,
79+
xen_api_version_2_2 = 13,
80+
xen_api_latest_version = 13,
7981
xen_api_unknown_version = 99,
8082
/* Also change xen_api_version_to_string() and set_api_version() in xen_common.c */
8183
} xen_api_version;

csharp/src/Helper.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ public enum API_Version
4848
API_1_9 = 9, // XenServer 6.0 (Boston)
4949
API_1_10 = 10, // XenServer 6.1 (Tampa)
5050
API_2_0 = 11, // XenServer 6.2 (Clearwater)
51-
LATEST = 11,
51+
API_2_1 = 12, // XenServer 6.2 with vGPU (vGPU)
52+
API_2_2 = 13, // XenServer 6.2 Hotfix XS62ESP1004 (Felton)
53+
LATEST = 13,
5254
// Don't forget to change LATEST above, and APIVersionString below.
5355
UNKNOWN = 99
5456
}
@@ -83,6 +85,10 @@ public static string APIVersionString(API_Version v)
8385
return "1.10";
8486
case API_Version.API_2_0:
8587
return "2.0";
88+
case API_Version.API_2_1:
89+
return "2.1";
90+
case API_Version.API_2_2:
91+
return "2.2";
8692
default:
8793
return "Unknown";
8894
}

csharp/src/Session.cs

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -278,29 +278,6 @@ public void login_with_password(string username, string password, string version
278278
}
279279
}
280280

281-
public void login_with_password(string username, string password, string version, string originator)
282-
{
283-
try
284-
{
285-
_uuid = proxy.session_login_with_password(username, password, version, originator).parse();
286-
SetAPIVersion();
287-
if (APIVersion >= API_Version.API_1_6)
288-
SetADDetails();
289-
}
290-
catch (Failure exn)
291-
{
292-
if (exn.ErrorDescription[0] == Failure.MESSAGE_PARAMETER_COUNT_MISMATCH)
293-
{
294-
// Call the pre-2.0 version instead.
295-
login_with_password(username, password, version);
296-
}
297-
else
298-
{
299-
throw;
300-
}
301-
}
302-
}
303-
304281
public void login_with_password(string username, string password, API_Version version)
305282
{
306283
login_with_password(username, password, Helper.APIVersionString(version));

java/lib/Makefile.dist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
2626
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2727
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
28-
# OF THE POSSIBILITY OF SUCH DAMAGE
28+
# OF THE POSSIBILITY OF SUCH DAMAGE.
2929
#
3030

3131
# Makefile to compile the Xen Java SDK bindings

0 commit comments

Comments
 (0)