Updated Branches: refs/heads/4.1 ba0d8c67b -> 696b4ed8e
CloudStack CLOUDSTACK-723 Enhanced baremetal servers support on Cisco UCS change API response in line with new API response convention Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/696b4ed8 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/696b4ed8 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/696b4ed8 Branch: refs/heads/4.1 Commit: 696b4ed8ea8ad5d24df96df56034c6ca908e9cf7 Parents: ba0d8c6 Author: frank <[email protected]> Authored: Tue Feb 26 16:30:58 2013 -0800 Committer: frank <[email protected]> Committed: Tue Feb 26 16:31:26 2013 -0800 ---------------------------------------------------------------------- .../org/apache/cloudstack/api/ApiConstants.java | 4 + .../ucs/src/com/cloud/ucs/database/UcsBladeVO.java | 6 +- .../com/cloud/ucs/manager/AddUcsManagerCmd.java | 13 +- .../cloud/ucs/manager/AddUcsManagerResponse.java | 69 ---------- .../ucs/manager/AssociateUcsProfileToBladeCmd.java | 11 +- .../AssociateUcsProfileToBladeResponse.java | 22 +++ ...sociateUcsProfileToBladesInClusterResponse.java | 22 --- .../src/com/cloud/ucs/manager/ListUcsBladeCmd.java | 70 ++++++++++ .../com/cloud/ucs/manager/ListUcsManagerCmd.java | 4 +- .../cloud/ucs/manager/ListUcsManagerResponse.java | 58 -------- .../com/cloud/ucs/manager/ListUcsProfileCmd.java | 4 +- .../cloud/ucs/manager/ListUcsProfileResponse.java | 36 ----- .../com/cloud/ucs/manager/UcsBladeResponse.java | 56 ++++++++ .../ucs/src/com/cloud/ucs/manager/UcsManager.java | 10 +- .../src/com/cloud/ucs/manager/UcsManagerImpl.java | 101 ++++++++++---- .../com/cloud/ucs/manager/UcsManagerResponse.java | 72 ++++++++++ .../com/cloud/ucs/manager/UcsProfileResponse.java | 36 +++++ 17 files changed, 360 insertions(+), 234 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/696b4ed8/api/src/org/apache/cloudstack/api/ApiConstants.java ---------------------------------------------------------------------- diff --git a/api/src/org/apache/cloudstack/api/ApiConstants.java b/api/src/org/apache/cloudstack/api/ApiConstants.java index 1d6199c..7efb7fe 100755 --- a/api/src/org/apache/cloudstack/api/ApiConstants.java +++ b/api/src/org/apache/cloudstack/api/ApiConstants.java @@ -440,6 +440,10 @@ public class ApiConstants { public static final String AUTOSCALE_USER_ID = "autoscaleuserid"; public static final String BAREMETAL_DISCOVER_NAME = "baremetaldiscovername"; public static final String UCS_DN = "ucsdn"; + public static final String UCS_MANAGER_ID = "ucsmanagerid"; + public static final String UCS_PROFILE_DN = "profiledn"; + public static final String UCS_BLADE_DN = "bladedn"; + public static final String UCS_BLADE_ID = "bladeid"; public enum HostDetails { all, capacity, events, stats, min; http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/696b4ed8/plugins/hypervisors/ucs/src/com/cloud/ucs/database/UcsBladeVO.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/ucs/src/com/cloud/ucs/database/UcsBladeVO.java b/plugins/hypervisors/ucs/src/com/cloud/ucs/database/UcsBladeVO.java old mode 100644 new mode 100755 index 527bc27..712f446 --- a/plugins/hypervisors/ucs/src/com/cloud/ucs/database/UcsBladeVO.java +++ b/plugins/hypervisors/ucs/src/com/cloud/ucs/database/UcsBladeVO.java @@ -41,8 +41,8 @@ public class UcsBladeVO { private Long hostId; @Column(name="dn") - private String dn; - + private String dn; + public long getId() { return id; } @@ -81,5 +81,5 @@ public class UcsBladeVO { public void setUuid(String uuid) { this.uuid = uuid; - } + } } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/696b4ed8/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AddUcsManagerCmd.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AddUcsManagerCmd.java b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AddUcsManagerCmd.java old mode 100644 new mode 100755 index 078add9..9348a72 --- a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AddUcsManagerCmd.java +++ b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AddUcsManagerCmd.java @@ -25,6 +25,7 @@ import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.BaseCmd.CommandType; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; +import org.apache.cloudstack.api.response.ZoneResponse; import org.apache.log4j.Logger; import com.cloud.exception.ConcurrentOperationException; @@ -35,33 +36,33 @@ import com.cloud.exception.ResourceUnavailableException; import com.cloud.server.ManagementService; import com.cloud.user.Account; -@APICommand(description="Adds a Ucs manager", responseObject=AddUcsManagerResponse.class) +@APICommand(name="addUcsManager", description="Adds a Ucs manager", responseObject=UcsManagerResponse.class) public class AddUcsManagerCmd extends BaseCmd { public static final Logger s_logger = Logger.getLogger(AddUcsManagerCmd.class); @Inject private UcsManager mgr; - @Parameter(name=ApiConstants.ZONE_ID, type=CommandType.LONG, description="the Zone id for the ucs manager", required=true) + @Parameter(name=ApiConstants.ZONE_ID, type=CommandType.UUID, description="the Zone id for the ucs manager", entityType=ZoneResponse.class, required=true) private Long zoneId; @Parameter(name=ApiConstants.NAME, type=CommandType.STRING, description="the name of UCS manager") private String name; - @Parameter(name=ApiConstants.URL, type=CommandType.STRING, description="the name of UCS url") + @Parameter(name=ApiConstants.URL, type=CommandType.STRING, description="the name of UCS url", required=true) private String url; - @Parameter(name=ApiConstants.USERNAME, type=CommandType.STRING, description="the username of UCS") + @Parameter(name=ApiConstants.USERNAME, type=CommandType.STRING, description="the username of UCS", required=true) private String username; - @Parameter(name=ApiConstants.PASSWORD, type=CommandType.STRING, description="the password of UCS") + @Parameter(name=ApiConstants.PASSWORD, type=CommandType.STRING, description="the password of UCS", required=true) private String password; @Override public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException { try { - AddUcsManagerResponse rsp = mgr.addUcsManager(this); + UcsManagerResponse rsp = mgr.addUcsManager(this); rsp.setObjectName("ucsmanager"); rsp.setResponseName(getCommandName()); this.setResponseObject(rsp); http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/696b4ed8/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AddUcsManagerResponse.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AddUcsManagerResponse.java b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AddUcsManagerResponse.java deleted file mode 100644 index 98dfd04..0000000 --- a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AddUcsManagerResponse.java +++ /dev/null @@ -1,69 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -package com.cloud.ucs.manager; - -import org.apache.cloudstack.api.ApiConstants; -import org.apache.cloudstack.api.BaseResponse; - -import com.cloud.serializer.Param; -import com.google.gson.annotations.SerializedName; - -public class AddUcsManagerResponse extends BaseResponse { - @SerializedName(ApiConstants.ID) @Param(description="the ID of the ucs manager") - private String id; - - @SerializedName(ApiConstants.NAME) @Param(description="the name of ucs manager") - private String name; - - @SerializedName(ApiConstants.URL) @Param(description="the url of ucs manager") - private String url; - - @SerializedName(ApiConstants.ZONE_ID) @Param(description="the zone ID of ucs manager") - private String zoneId; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getUrl() { - return url; - } - - public void setUrl(String url) { - this.url = url; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getZoneId() { - return zoneId; - } - - public void setZoneId(String zoneId) { - this.zoneId = zoneId; - } -} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/696b4ed8/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AssociateUcsProfileToBladeCmd.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AssociateUcsProfileToBladeCmd.java b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AssociateUcsProfileToBladeCmd.java old mode 100644 new mode 100755 index cc59e42..5c65def --- a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AssociateUcsProfileToBladeCmd.java +++ b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AssociateUcsProfileToBladeCmd.java @@ -19,8 +19,10 @@ package com.cloud.ucs.manager; import javax.inject.Inject; import org.apache.cloudstack.api.APICommand; +import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; import org.apache.cloudstack.api.BaseCmd; +import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.log4j.Logger; @@ -30,15 +32,18 @@ import com.cloud.exception.NetworkRuleConflictException; import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.user.Account; -@APICommand(description="associate a profile to a blade", responseObject=AssociateUcsProfileToBladesInClusterResponse.class) +@APICommand(name="associatesUscProfileToBlade", description="associate a profile to a blade", responseObject=AssociateUcsProfileToBladeResponse.class) public class AssociateUcsProfileToBladeCmd extends BaseCmd { public static final Logger s_logger = Logger.getLogger(AssociateUcsProfileToBladeCmd.class); @Inject private UcsManager mgr; - + + @Parameter(name=ApiConstants.UCS_MANAGER_ID, type=CommandType.UUID, description="ucs manager id", entityType=UcsManagerResponse.class, required=true) private Long ucsManagerId; + @Parameter(name=ApiConstants.UCS_PROFILE_DN, type=CommandType.STRING, description="profile dn", required=true) private String profileDn; + @Parameter(name=ApiConstants.UCS_BLADE_ID, type=CommandType.UUID, description="blade id", required=true) private Long bladeId; @Override @@ -46,7 +51,7 @@ public class AssociateUcsProfileToBladeCmd extends BaseCmd { ResourceAllocationException, NetworkRuleConflictException { try { mgr.associateProfileToBlade(this); - AssociateUcsProfileToBladesInClusterResponse rsp = new AssociateUcsProfileToBladesInClusterResponse(); + AssociateUcsProfileToBladeResponse rsp = new AssociateUcsProfileToBladeResponse(); rsp.setResponseName(getCommandName()); rsp.setObjectName("associateucsprofiletobalde"); this.setResponseObject(rsp); http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/696b4ed8/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AssociateUcsProfileToBladeResponse.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AssociateUcsProfileToBladeResponse.java b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AssociateUcsProfileToBladeResponse.java new file mode 100755 index 0000000..bd6ebdd --- /dev/null +++ b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AssociateUcsProfileToBladeResponse.java @@ -0,0 +1,22 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +package com.cloud.ucs.manager; + +import org.apache.cloudstack.api.BaseResponse; + +public class AssociateUcsProfileToBladeResponse extends BaseResponse { +} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/696b4ed8/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AssociateUcsProfileToBladesInClusterResponse.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AssociateUcsProfileToBladesInClusterResponse.java b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AssociateUcsProfileToBladesInClusterResponse.java deleted file mode 100644 index f6cb0a6..0000000 --- a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/AssociateUcsProfileToBladesInClusterResponse.java +++ /dev/null @@ -1,22 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -package com.cloud.ucs.manager; - -import org.apache.cloudstack.api.BaseResponse; - -public class AssociateUcsProfileToBladesInClusterResponse extends BaseResponse { -} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/696b4ed8/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsBladeCmd.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsBladeCmd.java b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsBladeCmd.java new file mode 100755 index 0000000..5061a44 --- /dev/null +++ b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsBladeCmd.java @@ -0,0 +1,70 @@ +package com.cloud.ucs.manager; + +import javax.inject.Inject; + +import org.apache.cloudstack.api.APICommand; +import org.apache.cloudstack.api.ApiConstants; +import org.apache.cloudstack.api.ApiErrorCode; +import org.apache.cloudstack.api.BaseCmd; +import org.apache.cloudstack.api.Parameter; +import org.apache.cloudstack.api.ServerApiException; +import org.apache.cloudstack.api.response.ListResponse; +import org.apache.log4j.Logger; + +import com.cloud.exception.ConcurrentOperationException; +import com.cloud.exception.InsufficientCapacityException; +import com.cloud.exception.NetworkRuleConflictException; +import com.cloud.exception.ResourceAllocationException; +import com.cloud.exception.ResourceUnavailableException; +import com.cloud.user.Account; + +@APICommand(name="listUcsBlade", description="List ucs blades", responseObject=UcsBladeResponse.class) +public class ListUcsBladeCmd extends BaseCmd { + public static final Logger s_logger = Logger.getLogger(ListUcsBladeCmd.class); + + @Inject + private UcsManager mgr; + + @Parameter(name=ApiConstants.UCS_MANAGER_ID, type=CommandType.UUID, description="ucs manager id", entityType=UcsManagerResponse.class, required=true) + private Long ucsManagerId; + + public UcsManager getMgr() { + return mgr; + } + + public void setMgr(UcsManager mgr) { + this.mgr = mgr; + } + + public Long getUcsManagerId() { + return ucsManagerId; + } + + public void setUcsManagerId(Long ucsManagerId) { + this.ucsManagerId = ucsManagerId; + } + + @Override + public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, + ResourceAllocationException, NetworkRuleConflictException { + try { + ListResponse<UcsBladeResponse> response = mgr.listUcsBlades(this); + response.setResponseName(getCommandName()); + response.setObjectName("ucsblade"); + this.setResponseObject(response); + } catch (Exception e) { + s_logger.warn(e.getMessage(), e); + throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, e.getMessage()); + } + } + + @Override + public String getCommandName() { + return "listucsbladeresponse"; + } + + @Override + public long getEntityOwnerId() { + return Account.ACCOUNT_ID_SYSTEM; + } +} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/696b4ed8/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsManagerCmd.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsManagerCmd.java b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsManagerCmd.java old mode 100644 new mode 100755 index 31662d9..f8cb702 --- a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsManagerCmd.java +++ b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsManagerCmd.java @@ -34,7 +34,7 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.server.ManagementService; import com.cloud.user.Account; -@APICommand(description="List ucs manager", responseObject=ListUcsManagerResponse.class) +@APICommand(description="List ucs manager", responseObject=UcsManagerResponse.class) public class ListUcsManagerCmd extends BaseCmd { public static final Logger s_logger = Logger.getLogger(ListUcsManagerCmd.class); @@ -48,7 +48,7 @@ public class ListUcsManagerCmd extends BaseCmd { public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException { try { - ListResponse<ListUcsManagerResponse> response = mgr.listUcsManager(this); + ListResponse<UcsManagerResponse> response = mgr.listUcsManager(this); response.setResponseName(getCommandName()); response.setObjectName("ucsmanager"); this.setResponseObject(response); http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/696b4ed8/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsManagerResponse.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsManagerResponse.java b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsManagerResponse.java deleted file mode 100644 index 450d59c..0000000 --- a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsManagerResponse.java +++ /dev/null @@ -1,58 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -package com.cloud.ucs.manager; - -import org.apache.cloudstack.api.ApiConstants; -import org.apache.cloudstack.api.BaseResponse; - -import com.cloud.serializer.Param; -import com.google.gson.annotations.SerializedName; - -public class ListUcsManagerResponse extends BaseResponse { - @SerializedName(ApiConstants.ID) @Param(description="id of ucs manager") - private String id; - - @SerializedName(ApiConstants.NAME) @Param(description="name of ucs manager") - private String name; - - @SerializedName(ApiConstants.ZONE_ID) @Param(description="zone id the ucs manager belongs to") - private String zoneId; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getZoneId() { - return zoneId; - } - - public void setZoneId(String zoneId) { - this.zoneId = zoneId; - } -} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/696b4ed8/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsProfileCmd.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsProfileCmd.java b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsProfileCmd.java old mode 100644 new mode 100755 index 7cbbe14..53d3289 --- a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsProfileCmd.java +++ b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsProfileCmd.java @@ -35,7 +35,7 @@ import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.server.ManagementService; import com.cloud.user.Account; -@APICommand(description="List profile in ucs manager", responseObject=ListUcsProfileResponse.class) +@APICommand(description="List profile in ucs manager", responseObject=UcsProfileResponse.class) public class ListUcsProfileCmd extends BaseCmd { public static final Logger s_logger = Logger.getLogger(ListUcsProfileCmd.class); @@ -56,7 +56,7 @@ public class ListUcsProfileCmd extends BaseCmd { public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException { try { - ListResponse<ListUcsProfileResponse> response = mgr.listUcsProfiles(this); + ListResponse<UcsProfileResponse> response = mgr.listUcsProfiles(this); response.setResponseName(getCommandName()); response.setObjectName("ucsprofile"); this.setResponseObject(response); http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/696b4ed8/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsProfileResponse.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsProfileResponse.java b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsProfileResponse.java deleted file mode 100644 index c29d1d0..0000000 --- a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/ListUcsProfileResponse.java +++ /dev/null @@ -1,36 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -package com.cloud.ucs.manager; - -import org.apache.cloudstack.api.ApiConstants; -import org.apache.cloudstack.api.BaseResponse; - -import com.cloud.serializer.Param; -import com.google.gson.annotations.SerializedName; - -public class ListUcsProfileResponse extends BaseResponse { - @SerializedName(ApiConstants.UCS_DN) @Param(description="the dn of ucs profile") - private String dn; - - public String getDn() { - return dn; - } - - public void setDn(String dn) { - this.dn = dn; - } -} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/696b4ed8/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsBladeResponse.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsBladeResponse.java b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsBladeResponse.java new file mode 100755 index 0000000..2dd20c7 --- /dev/null +++ b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsBladeResponse.java @@ -0,0 +1,56 @@ +package com.cloud.ucs.manager; + +import org.apache.cloudstack.api.ApiConstants; +import org.apache.cloudstack.api.BaseResponse; +import org.apache.cloudstack.api.EntityReference; + +import com.cloud.serializer.Param; +import com.cloud.ucs.database.UcsBladeVO; +import com.google.gson.annotations.SerializedName; +@EntityReference(value=UcsBladeVO.class) +public class UcsBladeResponse extends BaseResponse { + @SerializedName(ApiConstants.ID) + @Param(description = "ucs blade id") + private String id; + @SerializedName(ApiConstants.UCS_MANAGER_ID) + @Param(description = "ucs manager id") + private String ucsManagerId; + @SerializedName(ApiConstants.HOST_ID) + @Param(description = "cloudstack host id this blade associates to") + private String hostId; + @SerializedName(ApiConstants.UCS_BLADE_DN) + @Param(description = "ucs blade dn") + private String dn; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getUcsManagerId() { + return ucsManagerId; + } + + public void setUcsManagerId(String ucsManagerId) { + this.ucsManagerId = ucsManagerId; + } + + public String getHostId() { + return hostId; + } + + public void setHostId(String hostId) { + this.hostId = hostId; + } + + public String getDn() { + return dn; + } + + public void setDn(String dn) { + this.dn = dn; + } +} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/696b4ed8/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManager.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManager.java b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManager.java old mode 100644 new mode 100755 index 2e8040a..a999637 --- a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManager.java +++ b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManager.java @@ -21,11 +21,13 @@ import org.apache.cloudstack.api.response.ListResponse; import com.cloud.utils.component.Manager; public interface UcsManager extends Manager { - AddUcsManagerResponse addUcsManager(AddUcsManagerCmd cmd); + UcsManagerResponse addUcsManager(AddUcsManagerCmd cmd); - ListResponse<ListUcsProfileResponse> listUcsProfiles(ListUcsProfileCmd cmd); + ListResponse<UcsProfileResponse> listUcsProfiles(ListUcsProfileCmd cmd); - ListResponse<ListUcsManagerResponse> listUcsManager(ListUcsManagerCmd cmd); + ListResponse<UcsManagerResponse> listUcsManager(ListUcsManagerCmd cmd); - void associateProfileToBlade(AssociateUcsProfileToBladeCmd cmd); + void associateProfileToBlade(AssociateUcsProfileToBladeCmd cmd); + + ListResponse<UcsBladeResponse> listUcsBlades(ListUcsBladeCmd cmd); } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/696b4ed8/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManagerImpl.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManagerImpl.java b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManagerImpl.java old mode 100644 new mode 100755 index 356113d..18d3475 --- a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManagerImpl.java +++ b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManagerImpl.java @@ -42,8 +42,11 @@ import org.apache.log4j.Logger; import org.springframework.stereotype.Component; import com.cloud.dc.ClusterDetailsDao; +import com.cloud.dc.DataCenterVO; import com.cloud.dc.dao.ClusterDao; +import com.cloud.dc.dao.DataCenterDao; import com.cloud.host.HostVO; +import com.cloud.host.dao.HostDao; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.org.Cluster; import com.cloud.resource.ResourceService; @@ -78,8 +81,15 @@ public class UcsManagerImpl implements UcsManager { private ClusterDetailsDao clusterDetailsDao; @Inject private UcsBladeDao bladeDao; + @Inject + private HostDao hostDao; + @Inject + private DataCenterDao dcDao; - private Map<Long, String> cookies = new HashMap<Long, String>(); + private Map<Long, String> cookies = new HashMap<Long, String>(); + private String name; + private int runLevel; + private Map<String, Object> params; @Override public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { @@ -98,7 +108,7 @@ public class UcsManagerImpl implements UcsManager { @Override public String getName() { - return "UcsManager"; + return name; } private void discoverBlades(UcsManagerVO ucsMgrVo) { @@ -114,7 +124,7 @@ public class UcsManagerImpl implements UcsManager { @Override @DB - public AddUcsManagerResponse addUcsManager(AddUcsManagerCmd cmd) { + public UcsManagerResponse addUcsManager(AddUcsManagerCmd cmd) { UcsManagerVO vo = new UcsManagerVO(); vo.setUuid(UUID.randomUUID().toString()); vo.setPassword(cmd.getPassword()); @@ -127,7 +137,7 @@ public class UcsManagerImpl implements UcsManager { txn.start(); ucsDao.persist(vo); txn.commit(); - AddUcsManagerResponse rsp = new AddUcsManagerResponse(); + UcsManagerResponse rsp = new UcsManagerResponse(); rsp.setId(String.valueOf(vo.getId())); rsp.setName(vo.getName()); rsp.setUrl(vo.getUrl()); @@ -175,12 +185,12 @@ public class UcsManagerImpl implements UcsManager { } @Override - public ListResponse<ListUcsProfileResponse> listUcsProfiles(ListUcsProfileCmd cmd) { + public ListResponse<UcsProfileResponse> listUcsProfiles(ListUcsProfileCmd cmd) { List<UcsProfile> profiles = getUcsProfiles(cmd.getUcsManagerId()); - ListResponse<ListUcsProfileResponse> response = new ListResponse<ListUcsProfileResponse>(); - List<ListUcsProfileResponse> rs = new ArrayList<ListUcsProfileResponse>(); + ListResponse<UcsProfileResponse> response = new ListResponse<UcsProfileResponse>(); + List<UcsProfileResponse> rs = new ArrayList<UcsProfileResponse>(); for (UcsProfile p : profiles) { - ListUcsProfileResponse r = new ListUcsProfileResponse(); + UcsProfileResponse r = new UcsProfileResponse(); r.setObjectName("ucsprofile"); r.setDn(p.getDn()); rs.add(r); @@ -250,55 +260,88 @@ public class UcsManagerImpl implements UcsManager { } s_logger.debug(String.format("successfully associated profile[%s] to blade[%s]", pdn, bvo.getDn())); - } + } + + private String hostIdToUuid(Long hostId) { + HostVO vo = hostDao.findById(hostId); + return vo.getUuid(); + } + + private String zoneIdToUuid(Long zoneId) { + DataCenterVO vo = dcDao.findById(zoneId); + return vo.getUuid(); + } + + private String ucsManagerIdToUuid(Long ucsMgrId) { + UcsManagerVO vo = ucsDao.findById(ucsMgrId); + return vo.getUuid(); + } @Override - public ListResponse<ListUcsManagerResponse> listUcsManager(ListUcsManagerCmd cmd) { + public ListResponse<UcsManagerResponse> listUcsManager(ListUcsManagerCmd cmd) { SearchCriteriaService<UcsManagerVO, UcsManagerVO> serv = SearchCriteria2.create(UcsManagerVO.class); serv.addAnd(serv.getEntity().getZoneId(), Op.EQ, cmd.getZoneId()); List<UcsManagerVO> vos = serv.list(); - List<ListUcsManagerResponse> rsps = new ArrayList<ListUcsManagerResponse>(vos.size()); + List<UcsManagerResponse> rsps = new ArrayList<UcsManagerResponse>(vos.size()); for (UcsManagerVO vo : vos) { - ListUcsManagerResponse rsp = new ListUcsManagerResponse(); + UcsManagerResponse rsp = new UcsManagerResponse(); rsp.setObjectName("ucsmanager"); - rsp.setId(String.valueOf(vo.getId())); - rsp.setName(vo.getName()); - rsp.setZoneId(String.valueOf(vo.getZoneId())); + rsp.setId(vo.getUuid()); + rsp.setName(vo.getName()); + rsp.setUrl(vo.getUrl()); + rsp.setZoneId(zoneIdToUuid(vo.getZoneId())); rsps.add(rsp); } - ListResponse<ListUcsManagerResponse> response = new ListResponse<ListUcsManagerResponse>(); + ListResponse<UcsManagerResponse> response = new ListResponse<UcsManagerResponse>(); response.setResponses(rsps); return response; + } + + public ListResponse<UcsBladeResponse> listUcsBlades(ListUcsBladeCmd cmd) { + SearchCriteriaService<UcsBladeVO, UcsBladeVO> serv = SearchCriteria2.create(UcsBladeVO.class); + serv.addAnd(serv.getEntity().getUcsManagerId(), Op.EQ, cmd.getUcsManagerId()); + List<UcsBladeVO> vos = serv.list(); + + List<UcsBladeResponse> rsps = new ArrayList<UcsBladeResponse>(vos.size()); + for (UcsBladeVO vo : vos) { + UcsBladeResponse rsp = new UcsBladeResponse(); + rsp.setObjectName("ucsblade"); + rsp.setId(vo.getUuid()); + rsp.setDn(vo.getDn()); + rsp.setHostId(hostIdToUuid(vo.getHostId())); + rsp.setUcsManagerId(ucsManagerIdToUuid(vo.getUcsManagerId())); + rsps.add(rsp); + } + + ListResponse<UcsBladeResponse> response = new ListResponse<UcsBladeResponse>(); + response.setResponses(rsps); + + return response; } @Override - public void setName(String name) { - // TODO Auto-generated method stub - + public void setName(String name) { + this.name = name; } @Override - public void setConfigParams(Map<String, Object> params) { - // TODO Auto-generated method stub - + public void setConfigParams(Map<String, Object> params) { + this.params = params; } @Override public Map<String, Object> getConfigParams() { - // TODO Auto-generated method stub - return null; + return this.params; } @Override public int getRunLevel() { - // TODO Auto-generated method stub - return 0; + return runLevel; } @Override - public void setRunLevel(int level) { - // TODO Auto-generated method stub - + public void setRunLevel(int level) { + this.runLevel = level; } } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/696b4ed8/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManagerResponse.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManagerResponse.java b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManagerResponse.java new file mode 100755 index 0000000..634ee81 --- /dev/null +++ b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsManagerResponse.java @@ -0,0 +1,72 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +package com.cloud.ucs.manager; + +import org.apache.cloudstack.api.ApiConstants; +import org.apache.cloudstack.api.EntityReference; + +import org.apache.cloudstack.api.BaseResponse; + +import com.cloud.serializer.Param; +import com.cloud.ucs.database.UcsManagerVO; +import com.google.gson.annotations.SerializedName; +@EntityReference(value=UcsManagerVO.class) +public class UcsManagerResponse extends BaseResponse { + @SerializedName(ApiConstants.ID) @Param(description="the ID of the ucs manager") + private String id; + + @SerializedName(ApiConstants.NAME) @Param(description="the name of ucs manager") + private String name; + + @SerializedName(ApiConstants.URL) @Param(description="the url of ucs manager") + private String url; + + @SerializedName(ApiConstants.ZONE_ID) @Param(description="the zone ID of ucs manager") + private String zoneId; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getZoneId() { + return zoneId; + } + + public void setZoneId(String zoneId) { + this.zoneId = zoneId; + } +} http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/696b4ed8/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsProfileResponse.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsProfileResponse.java b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsProfileResponse.java new file mode 100755 index 0000000..1bbd2ca --- /dev/null +++ b/plugins/hypervisors/ucs/src/com/cloud/ucs/manager/UcsProfileResponse.java @@ -0,0 +1,36 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +package com.cloud.ucs.manager; + +import org.apache.cloudstack.api.ApiConstants; +import org.apache.cloudstack.api.BaseResponse; + +import com.cloud.serializer.Param; +import com.google.gson.annotations.SerializedName; + +public class UcsProfileResponse extends BaseResponse { + @SerializedName(ApiConstants.UCS_DN) @Param(description="ucs profile dn") + private String dn; + + public String getDn() { + return dn; + } + + public void setDn(String dn) { + this.dn = dn; + } +}
