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