/*
* 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.apache.provisionr.cloudstack.commands;
import java.io.PrintStream;
import org.apache.felix.gogo.commands.Command;
import org.apache.felix.gogo.commands.Option;
import org.apache.provisionr.cloudstack.DefaultProviderConfig;
import org.jclouds.cloudstack.CloudStackClient;
import org.jclouds.cloudstack.domain.DiskOffering;
import org.jclouds.cloudstack.domain.NetworkOffering;
import org.jclouds.cloudstack.domain.ServiceOffering;
@Command(scope = CommandSupport.CLOUDSTACK_SCOPE, name = OfferingsCommand.NAME,
description = "Commands to list CloudStack Service Offerings")
public class OfferingsCommand extends CommandSupport {
public static final String NAME = "offerings";
@Option(name = "-s", aliases = "--service", description = "List service offerings")
private boolean serviceOffering;
@Option(name = "-n", aliases = "--network", description = "List network offerings")
private boolean networkOffering;
@Option(name = "-d", aliases = "--disk", description = "List disk offerings")
private boolean diskOffering;
public OfferingsCommand(DefaultProviderConfig providerConfig) {
super(providerConfig);
}
@Override
public Object doExecuteWithContext(CloudStackClient client, PrintStream out) {
if (isDiskOfferingListed() || isServiceOfferingListed() || isNetworkOfferingListed()) {
out.printf("CloudStack Offerings for provider %s\n", getProvider().getId());
listServiceOfferingsIfSpecified(client, out);
listNetworkOfferingsIfSpecified(client, out);
listDiskOfferingsIfSpecified(client, out);
} else {
out.printf("No option specified. See --help for details.");
}
return null;
}
private void listDiskOfferingsIfSpecified(CloudStackClient client, PrintStream out) {
if (isDiskOfferingListed()) {
for (DiskOffering offering : client.getOfferingClient().listDiskOfferings()) {
out.printf("---\n%s\n", offering.toString());
}
}
}
private void listNetworkOfferingsIfSpecified(CloudStackClient client, PrintStream out) {
if (isNetworkOfferingListed()) {
for (NetworkOffering offering : client.getOfferingClient().listNetworkOfferings()) {
out.printf("---\n%s\n", offering.toString());
}
}
}
private void listServiceOfferingsIfSpecified(CloudStackClient client, PrintStream out) {
if (isServiceOfferingListed()) {
for (ServiceOffering offering : client.getOfferingClient().listServiceOfferings()) {
out.printf("---\n%s\n", offering.toString());
}
}
}
public boolean isDiskOfferingListed() {
return diskOffering;
}
public void setDiskOffering(boolean diskOffering) {
this.diskOffering = diskOffering;
}
public boolean isNetworkOfferingListed() {
return networkOffering;
}
public void setNetworkOffering(boolean networkOffering) {
this.networkOffering = networkOffering;
}
public boolean isServiceOfferingListed() {
return serviceOffering;
}
public void setServiceOffering(boolean serviceOffering) {
this.serviceOffering = serviceOffering;
}
}