Could you also explain about related classes? For example:  IaasProvider,
PartitionValidator, NodeMetadata


On Sat, Feb 8, 2014 at 12:45 PM, Nirmal Fernando <nirmal070...@gmail.com>wrote:

> Related jira: https://issues.apache.org/jira/browse/STRATOS-418
>
>
> On Sat, Feb 8, 2014 at 12:44 PM, Nirmal Fernando 
> <nirmal070...@gmail.com>wrote:
>
>> Hi All,
>>
>> It's time to refactor the definition a bit and following is the
>> re-factored version [1].
>>
>> Any thoughts?
>>
>> [1]
>>
>> /**
>>  * All IaaSes that are going to support by Cloud Controller, should
>> extend this abstract class.
>>  */
>> public abstract class Iaas {
>>     /**
>>      * Reference to the corresponding {@link IaasProvider}
>>      */
>>     private IaasProvider iaasProvider;
>>
>>     public Iaas(IaasProvider iaasProvider) {
>>         this.setIaasProvider(iaasProvider);
>>     }
>>
>>     public IaasProvider getIaasProvider() {
>>         return iaasProvider;
>>     }
>>
>>     public void setIaasProvider(IaasProvider iaasProvider) {
>>         this.iaasProvider = iaasProvider;
>>     }
>>
>>     /**
>>      * This should build the {@link ComputeService} object and the {@link
>> Template} object,
>>      * using the information from {@link IaasProvider} and should set the
>> built
>>      * {@link ComputeService} object in the {@link
>> IaasProvider#setComputeService(ComputeService)}
>>      * and also should set the built {@link Template} object in the
>>      * {@link IaasProvider#setTemplate(Template)}.
>>      */
>>     public abstract void buildComputeServiceAndTemplate();
>>
>>     /**
>>      * This method provides a way to set payload that can be obtained
>> from {@link IaasProvider#getPayload()}
>>      * in the {@link Template} of this IaaS.
>>      */
>>     public abstract void setDynamicPayload();
>>
>>     /**
>>      * This will obtain an IP address from the allocated list and
>> associate that IP with this node.
>>      * @param node Node to be associated with an IP.
>>      * @return associated public IP.
>>      */
>>     public abstract String associateAddress(NodeMetadata node);
>>
>>     /**
>>      * This will deallocate/release the given IP address back to pool.
>>      * @param iaasInfo corresponding {@link IaasProvider}
>>      * @param ip public IP address to be released.
>>      */
>>     public abstract void releaseAddress(String ip);
>>
>>     /**
>>      * This method should create a Key Pair corresponds to a given public
>> key in the respective region having the name given.
>>      * Also should override the value of the key pair in the {@link
>> Template} of this IaaS.
>>      * @param region region that the key pair will get created.
>>      * @param keyPairName name of the key pair. NOTE: Jclouds adds a
>> prefix : <code>jclouds#</code>
>>      * @param publicKey public key, from which the key pair will be
>> created.
>>      * @return whether the key pair creation is successful or not.
>>      */
>>     public abstract boolean createKeyPairFromPublicKey(String region,
>> String keyPairName, String publicKey);
>>
>>     /**
>>      * Validate a given region name against a particular IaaS.
>>      * If a particular IaaS doesn't have a concept called region, it can
>> simply throw {@link InvalidRegionException}.
>>      * @param region name of the region.
>>      * @return whether the region is valid.
>>      * @throws InvalidRegionException if the region is invalid.
>>      */
>>     public abstract boolean isValidRegion(String region) throws
>> InvalidRegionException;
>>
>>     /**
>>      * Validate a given zone name against a particular region in an IaaS.
>>      * If a particular IaaS doesn't have a concept called zone, it can
>> simply throw {@link InvalidZoneException}.
>>      * @param region region of the IaaS that the zone belongs to.
>>      * @param zone
>>      * @return whether the zone is valid in the given region or not.
>>      * @throws InvalidZoneException if the zone is invalid in a given
>> region.
>>      */
>>     public abstract boolean isValidZone(String region, String zone)
>> throws InvalidZoneException;
>>
>>     /**
>>      * Validate a given host id against a particular zone in an IaaS.
>>      * If a particular IaaS doesn't have a concept called hosts, it can
>> simply throw {@link InvalidHostException}.
>>      * @param zone zone of the IaaS that the host belongs to.
>>      * @param host
>>      * @return whether the host is valid in the given zone or not.
>>      * @throws InvalidHostException if the host is invalid in a given
>> zone.
>>      */
>>     public abstract boolean isValidHost(String zone, String host) throws
>> InvalidHostException;
>>
>>     /**
>>      * provides the {@link PartitionValidator} corresponds to this
>> particular IaaS.
>>      * @return {@link PartitionValidator}
>>      */
>>     public abstract PartitionValidator getPartitionValidator();
>>
>>     /**
>>      * Builds only the jclouds {@link Template}
>>      */
>>     public abstract void buildTemplate();
>>
>> }
>>
>>
>> --
>> Best Regards,
>> Nirmal
>>
>> Nirmal Fernando.
>> PPMC Member & Committer of Apache Stratos,
>> Senior Software Engineer, WSO2 Inc.
>>
>> Blog: http://nirmalfdo.blogspot.com/
>>
>
>
>
> --
> Best Regards,
> Nirmal
>
> Nirmal Fernando.
> PPMC Member & Committer of Apache Stratos,
> Senior Software Engineer, WSO2 Inc.
>
> Blog: http://nirmalfdo.blogspot.com/
>



-- 
Isuru Perera
Senior Software Engineer | WSO2, Inc. | http://wso2.com/
Lean . Enterprise . Middleware

about.me/chrishantha

Reply via email to