[
https://issues.apache.org/jira/browse/CLOUDSTACK-8672?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15789335#comment-15789335
]
ASF GitHub Bot commented on CLOUDSTACK-8672:
--------------------------------------------
Github user nitin-maharana commented on a diff in the pull request:
https://github.com/apache/cloudstack/pull/1859#discussion_r94272083
--- Diff:
plugins/network-elements/netscaler/src/com/cloud/api/commands/DeployNetscalerVpxCmd.java
---
@@ -0,0 +1,149 @@
+// 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.api.commands;
+
+import java.util.List;
+import java.util.Map;
+
+import javax.inject.Inject;
+
+import org.apache.log4j.Logger;
+
+import org.apache.cloudstack.api.ACL;
+import org.apache.cloudstack.api.APICommand;
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.ApiErrorCode;
+import org.apache.cloudstack.api.BaseAsyncCmd;
+import org.apache.cloudstack.api.Parameter;
+import org.apache.cloudstack.api.ServerApiException;
+import org.apache.cloudstack.api.response.NetworkResponse;
+import org.apache.cloudstack.api.response.ServiceOfferingResponse;
+import org.apache.cloudstack.api.response.SystemVmResponse;
+import org.apache.cloudstack.api.response.TemplateResponse;
+import org.apache.cloudstack.api.response.ZoneResponse;
+import org.apache.cloudstack.context.CallContext;
+
+import com.cloud.api.response.NetscalerLoadBalancerResponse;
+import com.cloud.event.EventTypes;
+import com.cloud.exception.ConcurrentOperationException;
+import com.cloud.exception.InsufficientCapacityException;
+import com.cloud.exception.InvalidParameterValueException;
+import com.cloud.exception.ResourceAllocationException;
+import com.cloud.exception.ResourceUnavailableException;
+import com.cloud.network.element.NetscalerLoadBalancerElementService;
+import com.cloud.user.Account;
+import com.cloud.utils.exception.CloudRuntimeException;
+import com.cloud.vm.VirtualMachine;
+
+@APICommand(name = "deployNetscalerVpx", responseObject =
NetscalerLoadBalancerResponse.class, description = "Creates new NS Vpx",
+ requestHasSensitiveInfo = true, responseHasSensitiveInfo = false)
+public class DeployNetscalerVpxCmd extends BaseAsyncCmd {
+
+ public static final Logger s_logger =
Logger.getLogger(DeployNetscalerVpxCmd.class.getName());
+ private static final String s_name = "deployNetscalerVpx";
+ @Inject
+ NetscalerLoadBalancerElementService _netsclarLbService;
+
+ /////////////////////////////////////////////////////
+ //////////////// API parameters /////////////////////
+ /////////////////////////////////////////////////////
+
+ @Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID,
entityType = ZoneResponse.class, required = true, description = "availability
zone for the virtual machine")
+ private Long zoneId;
+
+ @ACL
+ @Parameter(name = ApiConstants.SERVICE_OFFERING_ID, type =
CommandType.UUID, entityType = ServiceOfferingResponse.class, required = true,
description = "the ID of the service offering for the virtual machine")
+ private Long serviceOfferingId;
+
+ @ACL
+ @Parameter(name = ApiConstants.TEMPLATE_ID, type = CommandType.UUID,
entityType = TemplateResponse.class, required = true, description = "the ID of
the template for the virtual machine")
+ private Long templateId;
+
+ @Parameter(name = ApiConstants.NETWORK_ID,
+ type = CommandType.UUID,
+ entityType = NetworkResponse.class, required=false,
+ description = "The network this ip address should be
associated to.")
+ private Long networkId;
+ /////////////////////////////////////////////////////
+ /////////////////// Accessors ///////////////////////
+ /////////////////////////////////////////////////////
+
+
+
+ /////////////////////////////////////////////////////
+ /////////////// API Implementation///////////////////
+ /////////////////////////////////////////////////////
+
+ @Override
+ public void execute() throws ResourceUnavailableException,
InsufficientCapacityException, ServerApiException, ConcurrentOperationException,
+ ResourceAllocationException {
+ try {
+ Map<String,Object> resp =
_netsclarLbService.deployNetscalerServiceVm(this);
+ if (resp.size() > 0) {
+ SystemVmResponse response =
_responseGenerator.createSystemVmResponse((VirtualMachine)resp.get("vm"));
+ response.setGuestVlan((String)resp.get("guestvlan"));
+
response.setPublicVlan((List<String>)resp.get("publicvlan"));
+ response.setResponseName(getCommandName());
+ setResponseObject(response);
+ } else {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR,
"Fail to start system vm");
+ }
+
+ } catch (InvalidParameterValueException invalidParamExcp) {
+ throw new ServerApiException(ApiErrorCode.PARAM_ERROR,
invalidParamExcp.getMessage());
+ } catch (CloudRuntimeException runtimeExcp) {
+ throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR,
runtimeExcp.getMessage());
+ }
+ }
+
+ public Long getServiceOfferingId() {
+ return serviceOfferingId;
+ }
+
+ public Long getTemplateId() {
+ return templateId;
+ }
+
+ @Override
+ public String getEventDescription() {
+ return "Adding a netscaler load balancer device";
+ }
+
+ @Override
+ public String getEventType() {
+ return EventTypes.EVENT_NETSCALER_VM_START;
+ }
+
+ @Override
+ public String getCommandName() {
+ return s_name;
+ }
+
+ public Long getZoneId() {
+ return zoneId;
+ }
+
+ @Override
+ public long getEntityOwnerId() {
+ return CallContext.current().getCallingAccount().getId();
+ }
+ public Account getAccount(){
+ return _accountService.getActiveAccountById(getEntityOwnerId());
+ }
+ public void getReservationContext() {
+ //ReservationContext context = new
ReservationContextImpl(UUID.randomUUID().toString(), null , cmd.getAccount());
--- End diff --
@rajesh-battala : Right now, There is no usage of this function. So removal
of this won't have any implication. And the return type should also be
ReservationContext. I am correcting this code by returning the context, so that
it can be used in future.
> NCC Integration with CloudStack
> -------------------------------
>
> Key: CLOUDSTACK-8672
> URL: https://issues.apache.org/jira/browse/CLOUDSTACK-8672
> Project: CloudStack
> Issue Type: New Feature
> Security Level: Public(Anyone can view this level - this is the
> default.)
> Components: Network Devices
> Affects Versions: 4.6.0
> Reporter: Rajesh Battala
> Assignee: Rajesh Battala
> Priority: Critical
> Fix For: Future
>
>
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)