Well those were already there. You could find a separate thread on PartitionValidator.
On Sat, Feb 8, 2014 at 12:57 PM, Isuru Perera <[email protected]> wrote: > Could you also explain about related classes? For example: IaasProvider, > PartitionValidator, NodeMetadata > > > On Sat, Feb 8, 2014 at 12:45 PM, Nirmal Fernando > <[email protected]>wrote: > >> Related jira: https://issues.apache.org/jira/browse/STRATOS-418 >> >> >> On Sat, Feb 8, 2014 at 12:44 PM, Nirmal Fernando >> <[email protected]>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 > -- Best Regards, Nirmal Nirmal Fernando. PPMC Member & Committer of Apache Stratos, Senior Software Engineer, WSO2 Inc. Blog: http://nirmalfdo.blogspot.com/
