All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.softlayer.api.service.network.vlan.Firewall Maven / Gradle / Ivy

The newest version!
package com.softlayer.api.service.network.vlan;

import com.softlayer.api.ApiClient;
import com.softlayer.api.ResponseHandler;
import com.softlayer.api.annotation.ApiMethod;
import com.softlayer.api.annotation.ApiProperty;
import com.softlayer.api.annotation.ApiType;
import com.softlayer.api.service.Entity;
import com.softlayer.api.service.Location;
import com.softlayer.api.service.billing.Item;
import com.softlayer.api.service.metric.tracking.Object;
import com.softlayer.api.service.network.Gateway;
import com.softlayer.api.service.network.Vlan;
import com.softlayer.api.service.network.bandwidth.Usage;
import com.softlayer.api.service.network.vlan.firewall.Rule;
import com.softlayer.api.service.product.upgrade.Request;
import com.softlayer.api.service.provisioning.version1.Transaction;
import com.softlayer.api.service.software.component.Password;
import com.softlayer.api.service.tag.Reference;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Future;

/**
 * The SoftLayer_Network_Vlan_Firewall data type contains general information relating to a single SoftLayer VLAN firewall. This is the object which ties the running rules to a specific downstream server. Use the [[SoftLayer Network Firewall Template]] service to pull SoftLayer recommended rule set templates. Use the [[SoftLayer Network Firewall Update Request]] service to submit a firewall update request. 
 *
 * @see SoftLayer_Network_Vlan_Firewall
 */
@ApiType("SoftLayer_Network_Vlan_Firewall")
public class Firewall extends Entity {

    @ApiProperty
    protected Long accountId;

    public Long getAccountId() {
        return accountId;
    }

    public void setAccountId(Long accountId) {
        this.accountId = accountId;
    }

    /**
     * A firewall's allotted bandwidth (measured in GB).
     */
    @ApiProperty
    protected BigDecimal bandwidthAllocation;

    public BigDecimal getBandwidthAllocation() {
        return bandwidthAllocation;
    }

    public void setBandwidthAllocation(BigDecimal bandwidthAllocation) {
        this.bandwidthAllocation = bandwidthAllocation;
    }

    /**
     * The raw bandwidth usage data for the current billing cycle. One object will be returned for each network this firewall is attached to.
     */
    @ApiProperty
    protected List billingCycleBandwidthUsage;

    public List getBillingCycleBandwidthUsage() {
        if (billingCycleBandwidthUsage == null) {
            billingCycleBandwidthUsage = new ArrayList();
        }
        return billingCycleBandwidthUsage;
    }

    /**
     * The raw private bandwidth usage data for the current billing cycle.
     */
    @ApiProperty
    protected Usage billingCyclePrivateBandwidthUsage;

    public Usage getBillingCyclePrivateBandwidthUsage() {
        return billingCyclePrivateBandwidthUsage;
    }

    public void setBillingCyclePrivateBandwidthUsage(Usage billingCyclePrivateBandwidthUsage) {
        this.billingCyclePrivateBandwidthUsage = billingCyclePrivateBandwidthUsage;
    }

    /**
     * The raw public bandwidth usage data for the current billing cycle.
     */
    @ApiProperty
    protected Usage billingCyclePublicBandwidthUsage;

    public Usage getBillingCyclePublicBandwidthUsage() {
        return billingCyclePublicBandwidthUsage;
    }

    public void setBillingCyclePublicBandwidthUsage(Usage billingCyclePublicBandwidthUsage) {
        this.billingCyclePublicBandwidthUsage = billingCyclePublicBandwidthUsage;
    }

    /**
     * The billing item for a Hardware Firewall (Dedicated).
     */
    @ApiProperty
    protected Item billingItem;

    public Item getBillingItem() {
        return billingItem;
    }

    public void setBillingItem(Item billingItem) {
        this.billingItem = billingItem;
    }

    /**
     * Administrative bypass request status.
     */
    @ApiProperty
    protected String bypassRequestStatus;

    public String getBypassRequestStatus() {
        return bypassRequestStatus;
    }

    public void setBypassRequestStatus(String bypassRequestStatus) {
        this.bypassRequestStatus = bypassRequestStatus;
    }

    /**
     * The datacenter that the firewall resides in.
     */
    @ApiProperty
    protected Location datacenter;

    public Location getDatacenter() {
        return datacenter;
    }

    public void setDatacenter(Location datacenter) {
        this.datacenter = datacenter;
    }

    /**
     * The firewall device type.
     */
    @ApiProperty
    protected String firewallType;

    public String getFirewallType() {
        return firewallType;
    }

    public void setFirewallType(String firewallType) {
        this.firewallType = firewallType;
    }

    /**
     * A name reflecting the hostname and domain of the firewall. This is created from the combined values of the firewall's logical name and vlan number automatically, and thus can not be edited directly.
     */
    @ApiProperty
    protected String fullyQualifiedDomainName;

    public String getFullyQualifiedDomainName() {
        return fullyQualifiedDomainName;
    }

    public void setFullyQualifiedDomainName(String fullyQualifiedDomainName) {
        this.fullyQualifiedDomainName = fullyQualifiedDomainName;
    }

    /**
     * The credentials to log in to a firewall device. This is only present for dedicated appliances.
     */
    @ApiProperty
    protected Password managementCredentials;

    public Password getManagementCredentials() {
        return managementCredentials;
    }

    public void setManagementCredentials(Password managementCredentials) {
        this.managementCredentials = managementCredentials;
    }

    /**
     * A firewall's metric tracking object.
     */
    @ApiProperty
    protected Object metricTrackingObject;

    public Object getMetricTrackingObject() {
        return metricTrackingObject;
    }

    public void setMetricTrackingObject(Object metricTrackingObject) {
        this.metricTrackingObject = metricTrackingObject;
    }

    /**
     * The metric tracking object ID for this firewall.
     */
    @ApiProperty
    protected Long metricTrackingObjectId;

    public Long getMetricTrackingObjectId() {
        return metricTrackingObjectId;
    }

    public void setMetricTrackingObjectId(Long metricTrackingObjectId) {
        this.metricTrackingObjectId = metricTrackingObjectId;
    }

    /**
     * The update requests made for this firewall.
     */
    @ApiProperty
    protected List networkFirewallUpdateRequests;

    public List getNetworkFirewallUpdateRequests() {
        if (networkFirewallUpdateRequests == null) {
            networkFirewallUpdateRequests = new ArrayList();
        }
        return networkFirewallUpdateRequests;
    }

    /**
     * The gateway associated with this firewall, if any.
     */
    @ApiProperty
    protected Gateway networkGateway;

    public Gateway getNetworkGateway() {
        return networkGateway;
    }

    public void setNetworkGateway(Gateway networkGateway) {
        this.networkGateway = networkGateway;
    }

    /**
     * The VLAN object that a firewall is associated with and protecting.
     */
    @ApiProperty
    protected Vlan networkVlan;

    public Vlan getNetworkVlan() {
        return networkVlan;
    }

    public void setNetworkVlan(Vlan networkVlan) {
        this.networkVlan = networkVlan;
    }

    /**
     * The VLAN objects that a firewall is associated with and protecting.
     */
    @ApiProperty
    protected List networkVlans;

    public List getNetworkVlans() {
        if (networkVlans == null) {
            networkVlans = new ArrayList();
        }
        return networkVlans;
    }

    /**
     * The currently running rule set of this network component firewall.
     */
    @ApiProperty
    protected List rules;

    public List getRules() {
        if (rules == null) {
            rules = new ArrayList();
        }
        return rules;
    }

    @ApiProperty
    protected List tagReferences;

    public List getTagReferences() {
        if (tagReferences == null) {
            tagReferences = new ArrayList();
        }
        return tagReferences;
    }

    /**
     * A firewall's associated upgrade request object, if any.
     */
    @ApiProperty
    protected Request upgradeRequest;

    public Request getUpgradeRequest() {
        return upgradeRequest;
    }

    public void setUpgradeRequest(Request upgradeRequest) {
        this.upgradeRequest = upgradeRequest;
    }

    /**
     * A flag to indicate if the firewall is in administrative bypass mode. In other words, no rules are being applied to the traffic coming through.
     */
    @ApiProperty(canBeNullOrNotSet = true)
    protected String administrativeBypassFlag;

    public String getAdministrativeBypassFlag() {
        return administrativeBypassFlag;
    }

    public void setAdministrativeBypassFlag(String administrativeBypassFlag) {
        administrativeBypassFlagSpecified = true;
        this.administrativeBypassFlag = administrativeBypassFlag;
    }

    protected boolean administrativeBypassFlagSpecified;

    public boolean isAdministrativeBypassFlagSpecified() {
        return administrativeBypassFlagSpecified;
    }

    public void unsetAdministrativeBypassFlag() {
        administrativeBypassFlag = null;
        administrativeBypassFlagSpecified = false;
    }

    /**
     * Whether or not this firewall can be directly logged in to.
     */
    @ApiProperty(canBeNullOrNotSet = true)
    protected Boolean customerManagedFlag;

    public Boolean getCustomerManagedFlag() {
        return customerManagedFlag;
    }

    public void setCustomerManagedFlag(Boolean customerManagedFlag) {
        customerManagedFlagSpecified = true;
        this.customerManagedFlag = customerManagedFlag;
    }

    protected boolean customerManagedFlagSpecified;

    public boolean isCustomerManagedFlagSpecified() {
        return customerManagedFlagSpecified;
    }

    public void unsetCustomerManagedFlag() {
        customerManagedFlag = null;
        customerManagedFlagSpecified = false;
    }

    /**
     * A firewall's unique identifier.
     */
    @ApiProperty(canBeNullOrNotSet = true)
    protected Long id;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        idSpecified = true;
        this.id = id;
    }

    protected boolean idSpecified;

    public boolean isIdSpecified() {
        return idSpecified;
    }

    public void unsetId() {
        id = null;
        idSpecified = false;
    }

    /**
     * A firewall's primary IP address. This field will be the IP shown when doing network traces and reverse DNS and is a read-only property.
     */
    @ApiProperty(canBeNullOrNotSet = true)
    protected String primaryIpAddress;

    public String getPrimaryIpAddress() {
        return primaryIpAddress;
    }

    public void setPrimaryIpAddress(String primaryIpAddress) {
        primaryIpAddressSpecified = true;
        this.primaryIpAddress = primaryIpAddress;
    }

    protected boolean primaryIpAddressSpecified;

    public boolean isPrimaryIpAddressSpecified() {
        return primaryIpAddressSpecified;
    }

    public void unsetPrimaryIpAddress() {
        primaryIpAddress = null;
        primaryIpAddressSpecified = false;
    }

    /**
     * A count of the raw bandwidth usage data for the current billing cycle. One object will be returned for each network this firewall is attached to.
     */
    @ApiProperty
    protected Long billingCycleBandwidthUsageCount;

    public Long getBillingCycleBandwidthUsageCount() {
        return billingCycleBandwidthUsageCount;
    }

    public void setBillingCycleBandwidthUsageCount(Long billingCycleBandwidthUsageCount) {
        this.billingCycleBandwidthUsageCount = billingCycleBandwidthUsageCount;
    }

    /**
     * A count of the update requests made for this firewall.
     */
    @ApiProperty
    protected Long networkFirewallUpdateRequestCount;

    public Long getNetworkFirewallUpdateRequestCount() {
        return networkFirewallUpdateRequestCount;
    }

    public void setNetworkFirewallUpdateRequestCount(Long networkFirewallUpdateRequestCount) {
        this.networkFirewallUpdateRequestCount = networkFirewallUpdateRequestCount;
    }

    /**
     * A count of the VLAN objects that a firewall is associated with and protecting.
     */
    @ApiProperty
    protected Long networkVlanCount;

    public Long getNetworkVlanCount() {
        return networkVlanCount;
    }

    public void setNetworkVlanCount(Long networkVlanCount) {
        this.networkVlanCount = networkVlanCount;
    }

    /**
     * A count of the currently running rule set of this network component firewall.
     */
    @ApiProperty
    protected Long ruleCount;

    public Long getRuleCount() {
        return ruleCount;
    }

    public void setRuleCount(Long ruleCount) {
        this.ruleCount = ruleCount;
    }

    /**
     * A count of 
     */
    @ApiProperty
    protected Long tagReferenceCount;

    public Long getTagReferenceCount() {
        return tagReferenceCount;
    }

    public void setTagReferenceCount(Long tagReferenceCount) {
        this.tagReferenceCount = tagReferenceCount;
    }

    public Service asService(ApiClient client) {
        return service(client, id);
    }

    public static Service service(ApiClient client) {
        return client.createService(Service.class, null);
    }

    public static Service service(ApiClient client, Long id) {
        return client.createService(Service.class, id == null ? null : id.toString());
    }

    /**
     * The SoftLayer_Network_Vlan_Firewall service accesses general information relating to a single SoftLayer VLAN firewall.  This is the object which ties the running rules to a specific downstream server. The current running rule set can be pulled from this service. Use the [[SoftLayer Network Firewall Template]] service to pull SoftLayer recommended rule set templates. Use the [[SoftLayer Network Firewall Update Request]] service to submit a firewall update request. 
     *
     * @see SoftLayer_Network_Vlan_Firewall
     */
    @com.softlayer.api.annotation.ApiService("SoftLayer_Network_Vlan_Firewall")
    public static interface Service extends com.softlayer.api.Service {

        public ServiceAsync asAsync();
        public Mask withNewMask();
        public Mask withMask();
        public void setMask(Mask mask);

        /**
         * Approve a request from technical support to bypass the firewall. Once approved, support will be able to route and unroute the VLAN on the firewall. 
         *
         * @see SoftLayer_Network_Vlan_Firewall::approveBypassRequest
         */
        @ApiMethod(instanceRequired = true)
        public Void approveBypassRequest();

        /**
         * Retrieve the firewall device firmware version from database. 
         *
         * @see SoftLayer_Network_Vlan_Firewall::getFirewallFirmwareVersion
         */
        @ApiMethod(instanceRequired = true)
        public String getFirewallFirmwareVersion();

        /**
         * getObject returns a SoftLayer_Network_Vlan_Firewall object. You can only get objects for vlans attached to your account that have a network firewall enabled. 
         *
         * @see SoftLayer_Network_Vlan_Firewall::getObject
         */
        @ApiMethod(instanceRequired = true)
        public Firewall getObject();

        /**
         * Check for active transactions for the Firewall. 
         *
         * @see SoftLayer_Network_Vlan_Firewall::hasActiveTransactions
         */
        @ApiMethod(instanceRequired = true)
        public Boolean hasActiveTransactions();

        /**
         * Checks if the account is allowed to use some features of FSA1G and Hardware firewall (Dedicated) 
         *
         * @see SoftLayer_Network_Vlan_Firewall::isAccountAllowed
         */
        @ApiMethod(instanceRequired = true)
        public Boolean isAccountAllowed();

        /**
         * Whether this firewall qualifies for High Availability upgrade. 
         *
         * @see SoftLayer_Network_Vlan_Firewall::isHighAvailabilityUpgradeAvailable
         */
        @ApiMethod(instanceRequired = true)
        public Boolean isHighAvailabilityUpgradeAvailable();

        /**
         * Reject a request from technical support to bypass the firewall. Once rejected, IBM support will not be able to route and unroute the VLAN on the firewall. 
         *
         * @see SoftLayer_Network_Vlan_Firewall::rejectBypassRequest
         */
        @ApiMethod(instanceRequired = true)
        public Void rejectBypassRequest();

        /**
         * This will completely reset the firewall to factory settings. If the firewall is not a FSA 10G appliance an error will occur. Note, this process is performed asynchronously. During the process all traffic will not be routed through the firewall. 
         *
         * @see SoftLayer_Network_Vlan_Firewall::restoreDefaults
         */
        @ApiMethod(instanceRequired = true)
        public Transaction restoreDefaults();

        /**
         * This method will associate a comma separated list of tags with this object. 
         *
         * @see SoftLayer_Network_Vlan_Firewall::setTags
         */
        @ApiMethod(instanceRequired = true)
        public Boolean setTags(String tags);

        /**
         * Enable or disable route bypass for this context. If enabled, this will bypass the firewall entirely and all traffic will be routed directly to the host(s) behind it. If disabled, traffic will flow through the firewall normally. This feature is only available for Hardware Firewall (Dedicated) and dedicated appliances. 
         *
         * @see SoftLayer_Network_Vlan_Firewall::updateRouteBypass
         */
        @ApiMethod(instanceRequired = true)
        public Transaction updateRouteBypass(Boolean bypass);

        /**
         * @see SoftLayer_Network_Vlan_Firewall::getAccountId
         */
        @ApiMethod(instanceRequired = true)
        public Long getAccountId();

        /**
         * A firewall's allotted bandwidth (measured in GB).
         *
         * @see SoftLayer_Network_Vlan_Firewall::getBandwidthAllocation
         */
        @ApiMethod(instanceRequired = true)
        public BigDecimal getBandwidthAllocation();

        /**
         * The raw bandwidth usage data for the current billing cycle. One object will be returned for each network this firewall is attached to.
         *
         * @see SoftLayer_Network_Vlan_Firewall::getBillingCycleBandwidthUsage
         */
        @ApiMethod(instanceRequired = true)
        public List getBillingCycleBandwidthUsage();

        /**
         * The raw private bandwidth usage data for the current billing cycle.
         *
         * @see SoftLayer_Network_Vlan_Firewall::getBillingCyclePrivateBandwidthUsage
         */
        @ApiMethod(instanceRequired = true)
        public Usage getBillingCyclePrivateBandwidthUsage();

        /**
         * The raw public bandwidth usage data for the current billing cycle.
         *
         * @see SoftLayer_Network_Vlan_Firewall::getBillingCyclePublicBandwidthUsage
         */
        @ApiMethod(instanceRequired = true)
        public Usage getBillingCyclePublicBandwidthUsage();

        /**
         * The billing item for a Hardware Firewall (Dedicated).
         *
         * @see SoftLayer_Network_Vlan_Firewall::getBillingItem
         */
        @ApiMethod(instanceRequired = true)
        public Item getBillingItem();

        /**
         * Administrative bypass request status.
         *
         * @see SoftLayer_Network_Vlan_Firewall::getBypassRequestStatus
         */
        @ApiMethod(instanceRequired = true)
        public String getBypassRequestStatus();

        /**
         * The datacenter that the firewall resides in.
         *
         * @see SoftLayer_Network_Vlan_Firewall::getDatacenter
         */
        @ApiMethod(instanceRequired = true)
        public Location getDatacenter();

        /**
         * The firewall device type.
         *
         * @see SoftLayer_Network_Vlan_Firewall::getFirewallType
         */
        @ApiMethod(instanceRequired = true)
        public String getFirewallType();

        /**
         * A name reflecting the hostname and domain of the firewall. This is created from the combined values of the firewall's logical name and vlan number automatically, and thus can not be edited directly.
         *
         * @see SoftLayer_Network_Vlan_Firewall::getFullyQualifiedDomainName
         */
        @ApiMethod(instanceRequired = true)
        public String getFullyQualifiedDomainName();

        /**
         * The credentials to log in to a firewall device. This is only present for dedicated appliances.
         *
         * @see SoftLayer_Network_Vlan_Firewall::getManagementCredentials
         */
        @ApiMethod(instanceRequired = true)
        public Password getManagementCredentials();

        /**
         * A firewall's metric tracking object.
         *
         * @see SoftLayer_Network_Vlan_Firewall::getMetricTrackingObject
         */
        @ApiMethod(instanceRequired = true)
        public Object getMetricTrackingObject();

        /**
         * The metric tracking object ID for this firewall.
         *
         * @see SoftLayer_Network_Vlan_Firewall::getMetricTrackingObjectId
         */
        @ApiMethod(instanceRequired = true)
        public Long getMetricTrackingObjectId();

        /**
         * The update requests made for this firewall.
         *
         * @see SoftLayer_Network_Vlan_Firewall::getNetworkFirewallUpdateRequests
         */
        @ApiMethod(instanceRequired = true)
        public List getNetworkFirewallUpdateRequests();

        /**
         * The gateway associated with this firewall, if any.
         *
         * @see SoftLayer_Network_Vlan_Firewall::getNetworkGateway
         */
        @ApiMethod(instanceRequired = true)
        public Gateway getNetworkGateway();

        /**
         * The VLAN object that a firewall is associated with and protecting.
         *
         * @see SoftLayer_Network_Vlan_Firewall::getNetworkVlan
         */
        @ApiMethod(instanceRequired = true)
        public Vlan getNetworkVlan();

        /**
         * The VLAN objects that a firewall is associated with and protecting.
         *
         * @see SoftLayer_Network_Vlan_Firewall::getNetworkVlans
         */
        @ApiMethod(instanceRequired = true)
        public List getNetworkVlans();

        /**
         * The currently running rule set of this network component firewall.
         *
         * @see SoftLayer_Network_Vlan_Firewall::getRules
         */
        @ApiMethod(instanceRequired = true)
        public List getRules();

        /**
         * @see SoftLayer_Network_Vlan_Firewall::getTagReferences
         */
        @ApiMethod(instanceRequired = true)
        public List getTagReferences();

        /**
         * A firewall's associated upgrade request object, if any.
         *
         * @see SoftLayer_Network_Vlan_Firewall::getUpgradeRequest
         */
        @ApiMethod(instanceRequired = true)
        public Request getUpgradeRequest();

    }

    public static interface ServiceAsync extends com.softlayer.api.ServiceAsync {

        public Mask withNewMask();
        public Mask withMask();
        public void setMask(Mask mask);

        /**
         * Async version of {@link Service#approveBypassRequest}
         */
        public Future approveBypassRequest();

        public Future approveBypassRequest(ResponseHandler callback);

        /**
         * Async version of {@link Service#getFirewallFirmwareVersion}
         */
        public Future getFirewallFirmwareVersion();

        public Future getFirewallFirmwareVersion(ResponseHandler callback);

        /**
         * Async version of {@link Service#getObject}
         */
        public Future getObject();

        public Future getObject(ResponseHandler callback);

        /**
         * Async version of {@link Service#hasActiveTransactions}
         */
        public Future hasActiveTransactions();

        public Future hasActiveTransactions(ResponseHandler callback);

        /**
         * Async version of {@link Service#isAccountAllowed}
         */
        public Future isAccountAllowed();

        public Future isAccountAllowed(ResponseHandler callback);

        /**
         * Async version of {@link Service#isHighAvailabilityUpgradeAvailable}
         */
        public Future isHighAvailabilityUpgradeAvailable();

        public Future isHighAvailabilityUpgradeAvailable(ResponseHandler callback);

        /**
         * Async version of {@link Service#rejectBypassRequest}
         */
        public Future rejectBypassRequest();

        public Future rejectBypassRequest(ResponseHandler callback);

        /**
         * Async version of {@link Service#restoreDefaults}
         */
        public Future restoreDefaults();

        public Future restoreDefaults(ResponseHandler callback);

        /**
         * Async version of {@link Service#setTags}
         */
        public Future setTags(String tags);

        public Future setTags(String tags, ResponseHandler callback);

        /**
         * Async version of {@link Service#updateRouteBypass}
         */
        public Future updateRouteBypass(Boolean bypass);

        public Future updateRouteBypass(Boolean bypass, ResponseHandler callback);

        /**
         * Async version of {@link Service#getAccountId}
         */
        public Future getAccountId();

        /**
         * Async callback version of {@link Service#getAccountId}
         */
        public Future getAccountId(ResponseHandler callback);

        /**
         * Async version of {@link Service#getBandwidthAllocation}
         */
        public Future getBandwidthAllocation();

        /**
         * Async callback version of {@link Service#getBandwidthAllocation}
         */
        public Future getBandwidthAllocation(ResponseHandler callback);

        /**
         * Async version of {@link Service#getBillingCycleBandwidthUsage}
         */
        public Future> getBillingCycleBandwidthUsage();

        /**
         * Async callback version of {@link Service#getBillingCycleBandwidthUsage}
         */
        public Future getBillingCycleBandwidthUsage(ResponseHandler> callback);

        /**
         * Async version of {@link Service#getBillingCyclePrivateBandwidthUsage}
         */
        public Future getBillingCyclePrivateBandwidthUsage();

        /**
         * Async callback version of {@link Service#getBillingCyclePrivateBandwidthUsage}
         */
        public Future getBillingCyclePrivateBandwidthUsage(ResponseHandler callback);

        /**
         * Async version of {@link Service#getBillingCyclePublicBandwidthUsage}
         */
        public Future getBillingCyclePublicBandwidthUsage();

        /**
         * Async callback version of {@link Service#getBillingCyclePublicBandwidthUsage}
         */
        public Future getBillingCyclePublicBandwidthUsage(ResponseHandler callback);

        /**
         * Async version of {@link Service#getBillingItem}
         */
        public Future getBillingItem();

        /**
         * Async callback version of {@link Service#getBillingItem}
         */
        public Future getBillingItem(ResponseHandler callback);

        /**
         * Async version of {@link Service#getBypassRequestStatus}
         */
        public Future getBypassRequestStatus();

        /**
         * Async callback version of {@link Service#getBypassRequestStatus}
         */
        public Future getBypassRequestStatus(ResponseHandler callback);

        /**
         * Async version of {@link Service#getDatacenter}
         */
        public Future getDatacenter();

        /**
         * Async callback version of {@link Service#getDatacenter}
         */
        public Future getDatacenter(ResponseHandler callback);

        /**
         * Async version of {@link Service#getFirewallType}
         */
        public Future getFirewallType();

        /**
         * Async callback version of {@link Service#getFirewallType}
         */
        public Future getFirewallType(ResponseHandler callback);

        /**
         * Async version of {@link Service#getFullyQualifiedDomainName}
         */
        public Future getFullyQualifiedDomainName();

        /**
         * Async callback version of {@link Service#getFullyQualifiedDomainName}
         */
        public Future getFullyQualifiedDomainName(ResponseHandler callback);

        /**
         * Async version of {@link Service#getManagementCredentials}
         */
        public Future getManagementCredentials();

        /**
         * Async callback version of {@link Service#getManagementCredentials}
         */
        public Future getManagementCredentials(ResponseHandler callback);

        /**
         * Async version of {@link Service#getMetricTrackingObject}
         */
        public Future getMetricTrackingObject();

        /**
         * Async callback version of {@link Service#getMetricTrackingObject}
         */
        public Future getMetricTrackingObject(ResponseHandler callback);

        /**
         * Async version of {@link Service#getMetricTrackingObjectId}
         */
        public Future getMetricTrackingObjectId();

        /**
         * Async callback version of {@link Service#getMetricTrackingObjectId}
         */
        public Future getMetricTrackingObjectId(ResponseHandler callback);

        /**
         * Async version of {@link Service#getNetworkFirewallUpdateRequests}
         */
        public Future> getNetworkFirewallUpdateRequests();

        /**
         * Async callback version of {@link Service#getNetworkFirewallUpdateRequests}
         */
        public Future getNetworkFirewallUpdateRequests(ResponseHandler> callback);

        /**
         * Async version of {@link Service#getNetworkGateway}
         */
        public Future getNetworkGateway();

        /**
         * Async callback version of {@link Service#getNetworkGateway}
         */
        public Future getNetworkGateway(ResponseHandler callback);

        /**
         * Async version of {@link Service#getNetworkVlan}
         */
        public Future getNetworkVlan();

        /**
         * Async callback version of {@link Service#getNetworkVlan}
         */
        public Future getNetworkVlan(ResponseHandler callback);

        /**
         * Async version of {@link Service#getNetworkVlans}
         */
        public Future> getNetworkVlans();

        /**
         * Async callback version of {@link Service#getNetworkVlans}
         */
        public Future getNetworkVlans(ResponseHandler> callback);

        /**
         * Async version of {@link Service#getRules}
         */
        public Future> getRules();

        /**
         * Async callback version of {@link Service#getRules}
         */
        public Future getRules(ResponseHandler> callback);

        /**
         * Async version of {@link Service#getTagReferences}
         */
        public Future> getTagReferences();

        /**
         * Async callback version of {@link Service#getTagReferences}
         */
        public Future getTagReferences(ResponseHandler> callback);

        /**
         * Async version of {@link Service#getUpgradeRequest}
         */
        public Future getUpgradeRequest();

        /**
         * Async callback version of {@link Service#getUpgradeRequest}
         */
        public Future getUpgradeRequest(ResponseHandler callback);

    }

    public static class Mask extends com.softlayer.api.service.Entity.Mask {

        public Mask accountId() {
            withLocalProperty("accountId");
            return this;
        }

        public Mask bandwidthAllocation() {
            withLocalProperty("bandwidthAllocation");
            return this;
        }

        public com.softlayer.api.service.network.bandwidth.Usage.Mask billingCycleBandwidthUsage() {
            return withSubMask("billingCycleBandwidthUsage", com.softlayer.api.service.network.bandwidth.Usage.Mask.class);
        }

        public com.softlayer.api.service.network.bandwidth.Usage.Mask billingCyclePrivateBandwidthUsage() {
            return withSubMask("billingCyclePrivateBandwidthUsage", com.softlayer.api.service.network.bandwidth.Usage.Mask.class);
        }

        public com.softlayer.api.service.network.bandwidth.Usage.Mask billingCyclePublicBandwidthUsage() {
            return withSubMask("billingCyclePublicBandwidthUsage", com.softlayer.api.service.network.bandwidth.Usage.Mask.class);
        }

        public com.softlayer.api.service.billing.Item.Mask billingItem() {
            return withSubMask("billingItem", com.softlayer.api.service.billing.Item.Mask.class);
        }

        public Mask bypassRequestStatus() {
            withLocalProperty("bypassRequestStatus");
            return this;
        }

        public com.softlayer.api.service.Location.Mask datacenter() {
            return withSubMask("datacenter", com.softlayer.api.service.Location.Mask.class);
        }

        public Mask firewallType() {
            withLocalProperty("firewallType");
            return this;
        }

        public Mask fullyQualifiedDomainName() {
            withLocalProperty("fullyQualifiedDomainName");
            return this;
        }

        public com.softlayer.api.service.software.component.Password.Mask managementCredentials() {
            return withSubMask("managementCredentials", com.softlayer.api.service.software.component.Password.Mask.class);
        }

        public com.softlayer.api.service.metric.tracking.Object.Mask metricTrackingObject() {
            return withSubMask("metricTrackingObject", com.softlayer.api.service.metric.tracking.Object.Mask.class);
        }

        public Mask metricTrackingObjectId() {
            withLocalProperty("metricTrackingObjectId");
            return this;
        }

        public com.softlayer.api.service.network.firewall.update.Request.Mask networkFirewallUpdateRequests() {
            return withSubMask("networkFirewallUpdateRequests", com.softlayer.api.service.network.firewall.update.Request.Mask.class);
        }

        public com.softlayer.api.service.network.Gateway.Mask networkGateway() {
            return withSubMask("networkGateway", com.softlayer.api.service.network.Gateway.Mask.class);
        }

        public com.softlayer.api.service.network.Vlan.Mask networkVlan() {
            return withSubMask("networkVlan", com.softlayer.api.service.network.Vlan.Mask.class);
        }

        public com.softlayer.api.service.network.Vlan.Mask networkVlans() {
            return withSubMask("networkVlans", com.softlayer.api.service.network.Vlan.Mask.class);
        }

        public com.softlayer.api.service.network.vlan.firewall.Rule.Mask rules() {
            return withSubMask("rules", com.softlayer.api.service.network.vlan.firewall.Rule.Mask.class);
        }

        public com.softlayer.api.service.tag.Reference.Mask tagReferences() {
            return withSubMask("tagReferences", com.softlayer.api.service.tag.Reference.Mask.class);
        }

        public com.softlayer.api.service.product.upgrade.Request.Mask upgradeRequest() {
            return withSubMask("upgradeRequest", com.softlayer.api.service.product.upgrade.Request.Mask.class);
        }

        public Mask administrativeBypassFlag() {
            withLocalProperty("administrativeBypassFlag");
            return this;
        }

        public Mask customerManagedFlag() {
            withLocalProperty("customerManagedFlag");
            return this;
        }

        public Mask id() {
            withLocalProperty("id");
            return this;
        }

        public Mask primaryIpAddress() {
            withLocalProperty("primaryIpAddress");
            return this;
        }

        public Mask billingCycleBandwidthUsageCount() {
            withLocalProperty("billingCycleBandwidthUsageCount");
            return this;
        }

        public Mask networkFirewallUpdateRequestCount() {
            withLocalProperty("networkFirewallUpdateRequestCount");
            return this;
        }

        public Mask networkVlanCount() {
            withLocalProperty("networkVlanCount");
            return this;
        }

        public Mask ruleCount() {
            withLocalProperty("ruleCount");
            return this;
        }

        public Mask tagReferenceCount() {
            withLocalProperty("tagReferenceCount");
            return this;
        }

    }

}