Just to brief on other two; IaasProvider - via this your implementation get access to all the configurations that you've made on the IaaS. NodeMetadata - representation of a running instance/node in jclouds
On Sat, Feb 8, 2014 at 1:09 PM, Nirmal Fernando <[email protected]>wrote: > 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/ > -- Best Regards, Nirmal Nirmal Fernando. PPMC Member & Committer of Apache Stratos, Senior Software Engineer, WSO2 Inc. Blog: http://nirmalfdo.blogspot.com/
