diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManager.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManager.java index 9527f083704..203d8fe27c7 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManager.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManager.java @@ -39,4 +39,6 @@ public interface BaremetalVlanManager extends Manager, PluggableService { void releaseVlan(Network nw, VirtualMachineProfile vm); void registerSwitchBackend(BaremetalSwitchBackend backend); + + BaremetalRctResponse listRct(); } diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManagerImpl.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManagerImpl.java index 6cb91f8c375..5a560c1e339 100755 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManagerImpl.java +++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalVlanManagerImpl.java @@ -40,6 +40,7 @@ import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.VirtualMachineProfile; import com.google.gson.Gson; import org.apache.cloudstack.api.AddBaremetalRctCmd; +import org.apache.cloudstack.api.ListBaremetalRctCmd; import org.apache.cloudstack.api.command.admin.user.RegisterCmd; import org.springframework.web.client.RestTemplate; @@ -169,6 +170,19 @@ public class BaremetalVlanManagerImpl extends ManagerBase implements BaremetalVl backends.put(backend.getSwitchBackendType(), backend); } + @Override + public BaremetalRctResponse listRct() { + List vos = rctDao.listAll(); + if (!vos.isEmpty()) { + BaremetalRctVO vo = vos.get(0); + BaremetalRctResponse rsp = new BaremetalRctResponse(); + rsp.setId(vo.getUuid()); + rsp.setUrl(vo.getUrl()); + return rsp; + } + return null; + } + private BaremetalSwitchBackend getSwitchBackend(String type) { BaremetalSwitchBackend backend = backends.get(type); if (backend == null) { @@ -201,6 +215,7 @@ public class BaremetalVlanManagerImpl extends ManagerBase implements BaremetalVl public List> getCommands() { List> cmds = new ArrayList>(); cmds.add(AddBaremetalRctCmd.class); + cmds.add(ListBaremetalRctCmd.class); return cmds; } diff --git a/plugins/hypervisors/baremetal/src/org/apache/cloudstack/api/ListBaremetalRctCmd.java b/plugins/hypervisors/baremetal/src/org/apache/cloudstack/api/ListBaremetalRctCmd.java new file mode 100755 index 00000000000..3a69f3c6a0a --- /dev/null +++ b/plugins/hypervisors/baremetal/src/org/apache/cloudstack/api/ListBaremetalRctCmd.java @@ -0,0 +1,69 @@ +// 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. +// +// Automatically generated by addcopyright.py at 01/29/2013 +package org.apache.cloudstack.api; + +import com.cloud.baremetal.manager.BaremetalVlanManager; +import com.cloud.baremetal.networkservice.BaremetalRctResponse; +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 org.apache.cloudstack.acl.RoleType; +import org.apache.cloudstack.api.response.ListResponse; +import org.apache.log4j.Logger; + +import javax.inject.Inject; +import java.util.ArrayList; +import java.util.List; + +@APICommand(name = "listBaremetalRct", description = "list baremetal rack configuration", responseObject = BaremetalRctResponse.class, + requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, authorized = {RoleType.Admin}) +public class ListBaremetalRctCmd extends BaseListCmd { + private static final Logger s_logger = Logger.getLogger(ListBaremetalRctCmd.class); + private static final String s_name = "listbaremetalrctresponse"; + @Inject + BaremetalVlanManager vlanMgr; + + @Override + public void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, + ResourceAllocationException, NetworkRuleConflictException { + try { + ListResponse response = new ListResponse<>(); + List rctResponses = new ArrayList<>(); + BaremetalRctResponse rsp = vlanMgr.listRct(); + if (rsp != null) { + rctResponses.add(rsp); + } + response.setResponses(rctResponses); + response.setResponseName(getCommandName()); + response.setObjectName("baremetalrcts"); + this.setResponseObject(response); + } catch (Exception e) { + s_logger.debug("Exception happened while executing ListBaremetalRctCmd", e); + throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, e.getMessage()); + } + } + + @Override + public String getCommandName() { + return s_name; + } + +}