Package org.jclouds.abiquo.domain.infrastructure

Source Code of org.jclouds.abiquo.domain.infrastructure.ManagedRack$Builder

/*
* 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 org.jclouds.abiquo.domain.infrastructure;

import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.collect.Iterables.filter;

import java.util.List;

import org.jclouds.abiquo.AbiquoApi;
import org.jclouds.abiquo.domain.DomainWrapper;
import org.jclouds.abiquo.reference.ValidationErrors;

import org.jclouds.abiquo.reference.rest.ParentLinkName;
import org.jclouds.rest.ApiContext;

import com.abiquo.server.core.infrastructure.FsmsDto;
import com.abiquo.server.core.infrastructure.LogicServersDto;
import com.abiquo.server.core.infrastructure.MachinesDto;
import com.abiquo.server.core.infrastructure.OrganizationsDto;
import com.abiquo.server.core.infrastructure.RackDto;
import com.abiquo.server.core.infrastructure.UcsRackDto;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;

/**
* Adds high level functionality to {@link RackDto}.
*
* @author Ignasi Barrera
* @author Francesc Montserrat
* @see API: <a href="http://community.abiquo.com/display/ABI20/RackResource">
*      http://community.abiquo.com/display/ABI20/RackResource</a>
*/
public class ManagedRack extends DomainWrapper<UcsRackDto> {
   /** The default minimum VLAN id. */
   private static final int DEFAULT_VLAN_ID_MIN = 2;

   /** The default maximum VLAN id. */
   private static final int DEFAULT_VLAN_ID_MAX = 4094;

   /** The default maximum VLAN per virtual datacenter. */
   private static final int DEFAULT_VLAN_PER_VDC = 1;

   /** The default nrsq factor. */
   private static final int DEFAULT_NRSQ = 10;

   /** The datacenter where the rack belongs. */
   private Datacenter datacenter;

   /**
    * Constructor to be used only by the builder.
    */
   protected ManagedRack(final ApiContext<AbiquoApi> context, final UcsRackDto target) {
      super(context, target);
   }

   // Domain operations

   /**
    * Delete the managed rack.
    *
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/RackResource#RackResource-DeleteaRack"
    *      >
    *      http://community.abiquo.com/display/ABI20/Rack+Resource#RackResource
    *      #RackResource- DeleteaRack</a>
    */
   public void delete() {
      context.getApi().getInfrastructureApi().deleteRack(target);
      target = null;
   }

   /**
    * Create a new managed rack in Abiquo. This method wil discover the blades
    * configured in the UCS. If the data provided for the connection is invalid
    * a UcsRack will be created in Abiquo but with no Physical Machines attached
    * to it.
    *
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/RackResource#RackResource-CreateanewUCSRack"
    *      > http://community.abiquo.com/display/ABI20/RackResource#RackResource
    *      -CreateanewUCSRack< /a>
    */
   public void save() {
      target = context.getApi().getInfrastructureApi().createManagedRack(datacenter.unwrap(), target);
   }

   /**
    * Update rack information in the server with the data from this rack. The IP
    * data member cannot be updated. If changed will be ignored and the old IP
    * will remain.
    *
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/RackResource#RackResource#RackResource-UpdateanexistingUCSrack"
    *      > http://community.abiquo.com/display/ABI20/RackResource#RackResource
    *      #RackResource- UpdateanexistingUCSrack</a>
    */
   public void update() {
      target = context.getApi().getInfrastructureApi().updateManagedRack(target);
   }

   // Parent access
   /**
    * Retrieve the datacenter where this rack is.
    *
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/DatacenterResource#DatacenterResource-Retrieveadatacenter"
    *      > http://community.abiquo.com/display/ABI20/DatacenterResource#
    *      DatacenterResource- Retrieveadatacenter</a>
    */
   public Datacenter getDatacenter() {
      Integer datacenterId = target.getIdFromLink(ParentLinkName.DATACENTER);
      return wrap(context, Datacenter.class, context.getApi().getInfrastructureApi().getDatacenter(datacenterId));
   }

   // Children access

   /**
    * Retrieve the list of blades in this rack.
    *
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/MachineResource#MachineResource-RetrievealistofMachines"
    *      > http://community.abiquo.com/display/ABI20/MachineResource#
    *      MachineResource- RetrievealistofMachines</a>
    */
   public List<Blade> listMachines() {
      MachinesDto machines = context.getApi().getInfrastructureApi().listMachines(target);
      return wrap(context, Blade.class, machines.getCollection());
   }

   /**
    * Retrieve a filtered list of blades in this rack.
    *
    * @param filter
    *           Filter to be applied to the list.
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/MachineResource#MachineResource-RetrievealistofMachines"
    *      > http://community.abiquo.com/display/ABI20/MachineResource#
    *      MachineResource- RetrievealistofMachines</a>
    */
   public List<Blade> listMachines(final Predicate<Blade> filter) {
      return ImmutableList.copyOf(filter(listMachines(), filter));
   }

   /**
    * Retrieve the first blade matching the filter within the list of machines
    * in this rack.
    *
    * @param filter
    *           Filter to be applied to the list.
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/MachineResource#MachineResource-RetrievealistofMachines"
    *      > http://community.abiquo.com/display/ABI20/MachineResource#
    *      MachineResource- RetrievealistofMachines</a>
    */
   public Blade findMachine(final Predicate<Blade> filter) {
      return Iterables.getFirst(filter(listMachines(), filter), null);
   }

   /**
    * Retrieve the list of service profiles in this UCS rack.
    *
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/RackResource#RackResource-RetrievealistofallservicesprofilesinaUCSrack"
    *      > http://community.abiquo.com/display/ABI20/RackResource#RackResource
    *      - RetrievealistofallservicesprofilesinaUCSrack</a>
    */
   public List<LogicServer> listServiceProfiles() {
      LogicServersDto profiles = context.getApi().getInfrastructureApi().listServiceProfiles(target);
      return wrap(context, LogicServer.class, profiles.getCollection());
   }

   /**
    * Retrieve a filtered list of service profiles in this UCS rack.
    *
    * @param filter
    *           Filter to be applied to the list.
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/RackResource#RackResource-RetrievealistofallservicesprofilesinaUCSrack"
    *      > http://community.abiquo.com/display/ABI20/RackResource#RackResource
    *      - RetrievealistofallservicesprofilesinaUCSrack</a>
    */
   public List<LogicServer> listServiceProfiles(final Predicate<LogicServer> filter) {
      return ImmutableList.copyOf(filter(listServiceProfiles(), filter));
   }

   /**
    * Retrieve the first service profile matching the filter within the list of
    * profiles in this rack.
    *
    * @param filter
    *           Filter to be applied to the list.
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/RackResource#RackResource-RetrievealistofallservicesprofilesinaUCSrack"
    *      > http://community.abiquo.com/display/ABI20/RackResource#RackResource
    *      - RetrievealistofallservicesprofilesinaUCSrack</a>
    */
   public LogicServer findServiceProfile(final Predicate<LogicServer> filter) {
      return Iterables.getFirst(filter(listServiceProfiles(), filter), null);
   }

   /**
    * Retrieve the list of service profile templates in this UCS rack.
    *
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/RackResource-RetrievealistofallServicesProfilesTemplatesinaUCSRack"
    *      > http://community.abiquo.com/display/ABI20/RackResource-
    *      RetrievealistofallServicesProfilesTemplatesinaUCSRack</a>
    */
   public List<LogicServer> listServiceProfileTemplates() {
      LogicServersDto templates = context.getApi().getInfrastructureApi().listServiceProfileTemplates(target);
      return wrap(context, LogicServer.class, templates.getCollection());
   }

   /**
    * Retrieve a filtered list of service profile templates in this UCS rack.
    *
    * @param filter
    *           Filter to be applied to the list.
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/RackResource-RetrievealistofallServicesProfilesTemplatesinaUCSRack"
    *      > http://community.abiquo.com/display/ABI20/RackResource-
    *      RetrievealistofallServicesProfilesTemplatesinaUCSRack</a>
    */
   public List<LogicServer> listServiceProfileTemplates(final Predicate<LogicServer> filter) {
      return ImmutableList.copyOf(filter(listServiceProfileTemplates(), filter));
   }

   /**
    * Retrieve the first service profile template matching the filter within the
    * list of templates in this rack.
    *
    * @param filter
    *           Filter to be applied to the list.
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/RackResource-RetrievealistofallServicesProfilesTemplatesinaUCSRack"
    *      > http://community.abiquo.com/display/ABI20/RackResource-
    *      RetrievealistofallServicesProfilesTemplatesinaUCSRack</a>
    */
   public LogicServer findServiceProfileTemplate(final Predicate<LogicServer> filter) {
      return Iterables.getFirst(filter(listServiceProfileTemplates(), filter), null);
   }

   /**
    * Retrieve the list of organization in this UCS rack. The credentials in the
    * UcsRack configuration might not have enough rights in the UCS to retrieve
    * all organizations. Then only the allowed ones are returned. This data is
    * not persisted in Abiquo.
    *
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/RackResource#RackResource-
    *      RetrieveallorganizationsfromaUCS">
    *      http://community.abiquo.com/display/ABI20/</a>
    */
   public List<Organization> listOrganizations() {
      OrganizationsDto organizations = context.getApi().getInfrastructureApi().listOrganizations(target);
      return wrap(context, Organization.class, organizations.getCollection());
   }

   /**
    * Retrieve a filtered list of organization in this UCS rack. The credentials
    * in the UcsRack configuration might not have enough rights in the UCS to
    * retrieve all organizations. Then only the allowed ones are returned. This
    * data is not persisted in Abiquo.
    *
    * @param filter
    *           Filter to be applied to the list.
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/RackResource#RackResource-
    *      RetrieveallorganizationsfromaUCS" >
    *      http://community.abiquo.com/display/ABI20/RackResource#RackResource-
    *      RetrieveallorganizationsfromaUCS</a>
    */
   public List<Organization> listOrganizations(final Predicate<Organization> filter) {
      return ImmutableList.copyOf(filter(listOrganizations(), filter));
   }

   /**
    * Retrieve the first organization matching the filter within the list of
    * organization in this rack. The credentials in the UcsRack configuration
    * might not have enough rights in the UCS to retrieve all organizations.
    * Then only the allowed ones are returned. This data is not persisted in
    * Abiquo.
    *
    * @param filter
    *           Filter to be applied to the list.
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/RackResource#RackResource-
    *      RetrieveallorganizationsfromaUCS">
    *      http://community.abiquo.com/display/ABI20/RackResource#RackResource-
    *      RetrieveallorganizationsfromaUCS</a>
    */
   public Organization findOrganization(final Predicate<Organization> filter) {
      return Iterables.getFirst(filter(listOrganizations(), filter), null);
   }

   /**
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/RackResource#RackResource-RetrieveFSMofanentityinUCS"
    *      > http://community.abiquo.com/display/ABI20/RackResource#RackResource
    *      - RetrieveFSMofanentityinUCS</a>
    */
   public List<Fsm> listFsm(final String entityName) {
      FsmsDto fsms = context.getApi().getInfrastructureApi().listFsms(target, entityName);
      return wrap(context, Fsm.class, fsms.getCollection());
   }

   // Actions

   /**
    * Clone a Service Profile this rack. This data is not persisted in Abiquo.
    *
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/RackResource#RackResource-ClonelogicserverinUCS"
    *      > http://community.abiquo.com/display/ABI20/RackResource#RackResource
    *      - ClonelogicserverinUCS</a>
    */
   public void cloneLogicServer(final LogicServer logicServer, final Organization organization, final String newName) {
      context.getApi().getInfrastructureApi()
            .cloneLogicServer(this.unwrap(), logicServer.unwrap(), organization.unwrap(), newName);
   }

   /**
    * Associate a Service Profile and a Blade in UCS. If the Service Profile is
    * already associated then the request cannot be completed. This data is not
    * persisted in Abiquo.
    *
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/RackResource#RackResource-AssociatelogicserverwithabladeinUCS"
    *      > http://community.abiquo.com/display/ABI20/RackResource#RackResource
    *      - AssociatelogicserverwithabladeinUCS</a>
    */
   public void associateLogicServer(final String bladeName, final LogicServer logicServer,
         final Organization organization) {
      context.getApi().getInfrastructureApi()
            .associateLogicServer(this.unwrap(), logicServer.unwrap(), organization.unwrap(), bladeName);
   }

   /**
    * Clone and associate a Service Profile and a Blade in UCS. If the Blade is
    * already associated then Abiquo will dissociate it first. If the request
    * cannot be completed successfully the Blade might be left with no Service
    * Profile associated. This data is not persisted in Abiquo.
    *
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/RackResource#RackResource-CloneandassociateLogicServerwithabladeinUCS"
    *      > http://community.abiquo.com/display/ABI20/RackResource#RackResource
    *      - CloneandassociateLogicServerwithabladeinUCS</a>
    */
   public void cloneAndAssociateLogicServer(final String bladeName, final LogicServer logicServer,
         final Organization organization, final String logicServerName) {
      context
            .getApi()
            .getInfrastructureApi()
            .cloneAndAssociateLogicServer(this.unwrap(), logicServer.unwrap(), organization.unwrap(), bladeName,
                  logicServerName);
   }

   /**
    * Instantiate and associate a Service Profile Template and a Blade in UCS.
    * If the Service Profile is already associated the request cannot be
    * successful. If the Blade is already associated then Abiquo will dissociate
    * it first. If the request cannot be completed successfully the Blade might
    * be left with no Service Profile associated. This data is not persisted in
    * Abiquo.
    *
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/RackResource#RackResource-AssociateabladewithaLogicServerTemplate"
    *      > http://community.abiquo.com/display/ABI20/RackResource#RackResource
    *      - AssociateabladewithaLogicServerTemplate</a>
    */
   public void associateLogicServerTemplate(final String bladeName, final LogicServer logicServer,
         final Organization organization, final String logicServerName) {
      context.getApi().getInfrastructureApi()
            .associateTemplate(this.unwrap(), logicServer.unwrap(), organization.unwrap(), bladeName, logicServerName);
   }

   /**
    * Dissociates a Service Profile and a Blade in UCS. This data is not
    * persisted in Abiquo.
    *
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/RackResource#RackResource-DisassociatelogicserverfromabladeinUCS"
    *      > http://community.abiquo.com/display/ABI20/RackResource#RackResource
    *      - DisassociatelogicserverfromabladeinUCS</a>
    */
   public void disassociateLogicServer(final LogicServer logicServer) {
      context.getApi().getInfrastructureApi().dissociateLogicServer(this.unwrap(), logicServer.unwrap());
   }

   /**
    * Deletes a Service Profile in UCS. This data is not persisted in Abiquo.
    *
    * @see API: <a href=
    *      "http://community.abiquo.com/display/ABI20/RackResource#RackResource-DeletelogicserverwithabladeinUCS"
    *      > http://community.abiquo.com/display/ABI20/RackResource#RackResource
    *      - DeletelogicserverwithabladeinUCS</a>
    */
   public void deleteLogicServer(final LogicServer logicServer) {
      context.getApi().getInfrastructureApi().deleteLogicServer(this.unwrap(), logicServer.unwrap());
   }

   // Builder

   public static Builder builder(final ApiContext<AbiquoApi> context, final Datacenter datacenter) {
      return new Builder(context, datacenter);
   }

   public static class Builder {
      private ApiContext<AbiquoApi> context;

      private Integer id;

      private String name;

      private String shortDescription;

      private boolean haEnabled = false;

      private Integer nrsq = DEFAULT_NRSQ;

      private Integer vlanIdMax = DEFAULT_VLAN_ID_MAX;

      private Integer vlanIdMin = DEFAULT_VLAN_ID_MIN;

      private Integer vlanPerVdcReserved = DEFAULT_VLAN_PER_VDC;

      private String vlansIdAvoided;

      private Integer port;

      private String ip;

      private String password;

      private String user;

      private String defaultTemplate;

      private Integer maxMachinesOn;

      private Datacenter datacenter;

      public Builder(final ApiContext<AbiquoApi> context, final Datacenter datacenter) {
         super();
         checkNotNull(datacenter, ValidationErrors.NULL_RESOURCE + Datacenter.class);
         this.datacenter = datacenter;
         this.context = context;
      }

      public Builder port(final Integer port) {
         this.port = port;
         return this;
      }

      public Builder ipAddress(final String ip) {
         this.ip = ip;
         return this;
      }

      public Builder password(final String password) {
         this.password = password;
         return this;
      }

      public Builder user(final String user) {
         this.user = user;
         return this;
      }

      public Builder defaultTemplate(final String defaultTemplate) {
         this.defaultTemplate = defaultTemplate;
         return this;
      }

      public Builder maxMachinesOn(final Integer maxMachinesOn) {
         this.maxMachinesOn = maxMachinesOn;
         return this;
      }

      public Builder id(final Integer id) {
         this.id = id;
         return this;
      }

      public Builder name(final String name) {
         this.name = name;
         return this;
      }

      public Builder shortDescription(final String shortDescription) {
         this.shortDescription = shortDescription;
         return this;
      }

      public Builder haEnabled(final boolean haEnabled) {
         this.haEnabled = haEnabled;
         return this;
      }

      public Builder nrsq(final int nrsq) {
         this.nrsq = nrsq;
         return this;
      }

      public Builder vlanIdMax(final int vlanIdMax) {
         this.vlanIdMax = vlanIdMax;
         return this;
      }

      public Builder vlanIdMin(final int vlanIdMin) {
         this.vlanIdMin = vlanIdMin;
         return this;
      }

      public Builder vlanPerVdcReserved(final int vlanPerVdcExpected) {
         this.vlanPerVdcReserved = vlanPerVdcExpected;
         return this;
      }

      public Builder vlansIdAvoided(final String vlansIdAvoided) {
         this.vlansIdAvoided = vlansIdAvoided;
         return this;
      }

      public Builder datacenter(final Datacenter datacenter) {
         checkNotNull(datacenter, ValidationErrors.NULL_RESOURCE + Datacenter.class);
         this.datacenter = datacenter;
         return this;
      }

      public ManagedRack build() {
         UcsRackDto dto = new UcsRackDto();
         dto.setId(id);
         dto.setName(name);
         dto.setShortDescription(shortDescription);
         dto.setHaEnabled(haEnabled);
         dto.setNrsq(nrsq);
         dto.setVlanIdMax(vlanIdMax);
         dto.setVlanIdMin(vlanIdMin);
         dto.setVlanPerVdcReserved(vlanPerVdcReserved);
         dto.setVlansIdAvoided(vlansIdAvoided);
         dto.setPort(port);
         dto.setIp(ip);
         dto.setPassword(password);
         dto.setUser(user);
         dto.setDefaultTemplate(defaultTemplate);
         dto.setMaxMachinesOn(maxMachinesOn);

         ManagedRack rack = new ManagedRack(context, dto);
         rack.datacenter = datacenter;
         return rack;
      }

      public static Builder fromRack(final ManagedRack in) {
         return ManagedRack.builder(in.context, in.datacenter).id(in.getId()).name(in.getName())
               .shortDescription(in.getShortDescription()).haEnabled(in.isHaEnabled()).nrsq(in.getNrsq())
               .vlanIdMax(in.getVlanIdMax()).vlanIdMin(in.getVlanIdMin())
               .vlanPerVdcReserved(in.getVlanPerVdcReserved()).vlansIdAvoided(in.getVlansIdAvoided())
               .port(in.getPort()).ipAddress(in.getIp()).password(in.getPassword()).user(in.getUser())
               .defaultTemplate(in.getDefaultTemplate()).maxMachinesOn(in.getMaxMachinesOn());
      }
   }

   // Delegate methods

   public Integer getId() {
      return target.getId();
   }

   public String getName() {
      return target.getName();
   }

   public String getShortDescription() {
      return target.getShortDescription();
   }

   public void setShortDescription(final String description) {
      target.setShortDescription(description);
   }

   public void setHaEnabled(final boolean haEnabled) {
      target.setHaEnabled(haEnabled);
   }

   public boolean isHaEnabled() {
      return target.isHaEnabled();
   }

   public Integer getNrsq() {
      return target.getNrsq();
   }

   public Integer getVlanIdMax() {
      return target.getVlanIdMax();
   }

   public Integer getVlanIdMin() {
      return target.getVlanIdMin();
   }

   public Integer getVlanPerVdcReserved() {
      return target.getVlanPerVdcReserved();
   }

   public String getVlansIdAvoided() {
      return target.getVlansIdAvoided();
   }

   public void setNrsq(final Integer nrsq) {
      target.setNrsq(nrsq);
   }

   public void setVlanIdMax(final Integer vlanIdMax) {
      target.setVlanIdMax(vlanIdMax);
   }

   public void setVlanIdMin(final Integer vlanIdMin) {
      target.setVlanIdMin(vlanIdMin);
   }

   public void setVlanPerVdcReserved(final Integer vlanPerVdcReserved) {
      target.setVlanPerVdcReserved(vlanPerVdcReserved);
   }

   public void setVlansIdAvoided(final String vlansIdAvoided) {
      target.setVlansIdAvoided(vlansIdAvoided);
   }

   public String getIp() {
      return target.getIp();
   }

   public String getLongDescription() {
      return target.getLongDescription();
   }

   public Integer getMaxMachinesOn() {
      return target.getMaxMachinesOn();
   }

   public String getPassword() {
      return target.getPassword();
   }

   public Integer getPort() {
      return target.getPort();
   }

   public String getUser() {
      return target.getUser();
   }

   public void setDefaultTemplate(final String defaultTemplate) {
      target.setDefaultTemplate(defaultTemplate);
   }

   public String getDefaultTemplate() {
      return target.getDefaultTemplate();
   }

   public void setIp(final String ip) {
      target.setIp(ip);
   }

   public void setMaxMachinesOn(final Integer maxMachinesOn) {
      target.setMaxMachinesOn(maxMachinesOn);
   }

   public void setPassword(final String password) {
      target.setPassword(password);
   }

   public void setPort(final Integer port) {
      target.setPort(port);
   }

   public void setUser(final String user) {
      target.setUser(user);
   }

   @Override
   public String toString() {
      return "ManagedRack [id=" + getId() + ", name=" + getName() + ", shortDescription=" + getShortDescription()
            + ", haEnabled=" + isHaEnabled() + ", nrsq=" + getNrsq() + ", vlanIdMax=" + getVlanIdMax() + ", vlanIdMin="
            + getVlanIdMin() + ", vlanPerVdcReserved=" + getVlanPerVdcReserved() + ", vlansIdAvoided="
            + getVlansIdAvoided() + ", ip=" + getIp() + ", longDescription=" + getLongDescription()
            + ", maxMachinesOn=" + getMaxMachinesOn() + ", password=**PROTECTED**, port=" + getPort() + ", user="
            + getUser() + ", defaultTemplate=" + getDefaultTemplate() + "]";
   }

}
TOP

Related Classes of org.jclouds.abiquo.domain.infrastructure.ManagedRack$Builder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.