[ 
https://issues.apache.org/jira/browse/CLOUDSTACK-9003?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeffrey Hair updated CLOUDSTACK-9003:
-------------------------------------
    Description: 
Proposal: Make the various classes/code that give VMs and other resources 
hostnames, hypervisor guest names, and UUIDs into their classes as injectable 
dependencies in their own module under the core module.

This proposal originally only concerned the VirtualMachineName class and can be 
broken down into several parts:
* Make the VirtualMachineName class an injectable dependency instead of being 
full of static methods.
* Refactor the generateHostName method in UserVmManagerImpl to be backed by an 
injectable service which generates host names.
* Move the UUIDManagerImpl from the core module to a new module (grouped with 
the other 2 ideally).

Rationale:
* VirtualMachineName is one of the few remaining classes that has static 
methods tangled like spaghetti throughout the code. This change will put it in 
line with the rest of the management server codebase and opens the door to 
extensibility. Which brings us to...
* Extensibility: The ultimate goal of this feature is to provide 3rd party 
developers the option of changing default instance/resource naming policies. 
Currently this is possible in a very limited fashion with the instance.name 
global setting, but this proposal makes it much more extensible.

By moving the naming-related services (VirtualMachineName, UUIDManager, and 
more as added/discovered) to their own module, the module can be excluded by 
module.properties and different ones substituted in. Alternatively, it could 
use the adapter model that other classes use, and the user can configure which 
adapters are active and also provide custom ones.

A good use case for this functionality is using a different style naming to 
emulate other cloud providers such as AWS (i-abc123) or GCE. 

  was:
Proposal: Make the various classes/code that give VMs and other resources 
hostnames, hypervisor guest names, and UUIDs into their classes as injectable 
dependencies in their own module under the core module.

This proposal originally only concerned the VirtualMachineName class and can be 
broken down into several parts:
* Make the VirtualMachineName class an injectable dependency instead of being 
full of static methods.
* Refactor the generateHostName method in UserVmManagerImpl to be backed by an 
injectable service which generates host names.
* Move the UUIDManagerImpl from the core module to a new module (grouped with 
the other 2 ideally).

Rationale:
* VirtualMachineName is one of the few remaining classes that has static 
methods tangled like spaghetti throughout the code. This change will put it in 
line with the rest of the management server codebase and opens the door to 
extensibility. Which brings us to...
* Extensibility: The ultimate goal of this feature is to provide 3rd party 
developers the option of changing default instance/resource naming policies. 
Currently this is possible in a very limited fashion with the instance.name 
global setting, but this proposal makes it much more extensible.

By the naming-related services (VirtualMachineName, UUIDManager, and more as 
added/discovered) to their own module, the module can be excluded by 
module.properties and different ones substituted in. Alternatively, it could 
use the adapter model that other classes use, and the user can configure which 
adapters are active and also provide custom ones.

A good use case for this functionality is using a different style naming to 
emulate other cloud providers such as AWS (i-abc123) or GCE. 


> Make VM naming services injectable and in their own module
> ----------------------------------------------------------
>
>                 Key: CLOUDSTACK-9003
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-9003
>             Project: CloudStack
>          Issue Type: Improvement
>      Security Level: Public(Anyone can view this level - this is the 
> default.) 
>            Reporter: Jeffrey Hair
>            Priority: Minor
>
> Proposal: Make the various classes/code that give VMs and other resources 
> hostnames, hypervisor guest names, and UUIDs into their classes as injectable 
> dependencies in their own module under the core module.
> This proposal originally only concerned the VirtualMachineName class and can 
> be broken down into several parts:
> * Make the VirtualMachineName class an injectable dependency instead of being 
> full of static methods.
> * Refactor the generateHostName method in UserVmManagerImpl to be backed by 
> an injectable service which generates host names.
> * Move the UUIDManagerImpl from the core module to a new module (grouped with 
> the other 2 ideally).
> Rationale:
> * VirtualMachineName is one of the few remaining classes that has static 
> methods tangled like spaghetti throughout the code. This change will put it 
> in line with the rest of the management server codebase and opens the door to 
> extensibility. Which brings us to...
> * Extensibility: The ultimate goal of this feature is to provide 3rd party 
> developers the option of changing default instance/resource naming policies. 
> Currently this is possible in a very limited fashion with the instance.name 
> global setting, but this proposal makes it much more extensible.
> By moving the naming-related services (VirtualMachineName, UUIDManager, and 
> more as added/discovered) to their own module, the module can be excluded by 
> module.properties and different ones substituted in. Alternatively, it could 
> use the adapter model that other classes use, and the user can configure 
> which adapters are active and also provide custom ones.
> A good use case for this functionality is using a different style naming to 
> emulate other cloud providers such as AWS (i-abc123) or GCE. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to