[ 
https://issues.apache.org/jira/browse/CLOUDSTACK-9003?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15240960#comment-15240960
 ] 

ASF GitHub Bot commented on CLOUDSTACK-9003:
--------------------------------------------

Github user ProjectMoon commented on the pull request:

    https://github.com/apache/cloudstack/pull/1492#issuecomment-209875708
  
    > @ProjectMoon correct resource naming is critical to the proper operation 
of the management server. We have had a significant bugs and production issues 
caused by subtle changes to resource naming strategies between releases where 
CloudStack suddenly can't find a resource on the device it is attempting to 
control. 
    
    > Have you performed any upgrade testing for this PR? If so, what tests 
have you performed in which configurations?
    
    We have not specifically performed any upgrade testing. Our current stable 
version is based on 4.7.1, and essentially our "upgrade testing" has consisted 
of deploying 4.7.1 before and after our development of this feature is 
complete. The configuration has been tested with KVM, VmWare, and the 
simulator. 
    
    > Also, could you please add an FS to the wiki and start a conversation on 
dev@? Given the importance of resource naming, it would be extremely helpful to 
have an explanation of the design and its operation.
    
    As far as I know, I don't have access to the wiki. Otherwise I would add to 
it. Do I need to register a separate account or can I use my Apache JIRA 
account?
    
    > @ProjectMoon we'll need more information on why you're doing this, why we 
should have it, what is fixes and will it guarantee backward resource-name 
compatibility (for example, vmware vms have this strictly tie up with internal 
ACS vm name, such config are set in each vmware's VM's annotations) and upgrade 
paths
    
    * **Why we are doing this**: we implement our own naming scheme for the 
supported resources. On our 4.2 branch we hacked this in, but now we want to 
present a framework that we can extend, and open the possibilities to other.
    * **Why should mainline have this**: More flexibility for developers, 
easier testing (static classes notoriously cause problems), a unified way to 
generate names (DRY principle).
    * **What it fixes**: It doesn't _fix_ anything per se, but the refactoring 
helps move us towards a cleaner codebase.
    * **Backwards compatibility**: The default plugin generates names and UUIDs 
in the exact same way as before, so yes.
    
    VmWare is an interesting case though. Can you describe in more detail/point 
me to where this stuff happens so I can verify that custom naming plugins will 
not break it?


> 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 or backend 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 
> modules.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