CVSROOT:        /cvs/cluster
Module name:    conga
Changes by:     [EMAIL PROTECTED]       2008-01-15 04:41:41

Modified files:
        luci/site/luci/Extensions: HelperFunctions.py LuciClusterInfo.py 
                                   LuciValidation.py LuciZopeExternal.py 
                                   homebase_adapters.py 
        luci/site/luci/Extensions/ClusterModel: ModelBuilder.py 
        luci/cluster   : cluster_svc-macros 
        .              : Makefile clustermon.spec.in.in conga.spec.in.in 

Log message:
        Fix bz383071 (Virtual machine configuration - add field for "migration 
type" xml attr = "migrate")

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/HelperFunctions.py.diff?cvsroot=cluster&r1=1.12&r2=1.13
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciClusterInfo.py.diff?cvsroot=cluster&r1=1.18&r2=1.19
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciValidation.py.diff?cvsroot=cluster&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/LuciZopeExternal.py.diff?cvsroot=cluster&r1=1.5&r2=1.6
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/homebase_adapters.py.diff?cvsroot=cluster&r1=1.54&r2=1.55
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py.diff?cvsroot=cluster&r1=1.14&r2=1.15
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/cluster/cluster_svc-macros.diff?cvsroot=cluster&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/Makefile.diff?cvsroot=cluster&r1=1.14&r2=1.15
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/clustermon.spec.in.in.diff?cvsroot=cluster&r1=1.34&r2=1.35
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/conga.spec.in.in.diff?cvsroot=cluster&r1=1.92&r2=1.93

--- conga/luci/site/luci/Extensions/HelperFunctions.py  2008/01/02 21:00:31     
1.12
+++ conga/luci/site/luci/Extensions/HelperFunctions.py  2008/01/15 04:41:40     
1.13
@@ -9,7 +9,8 @@
 import threading
 
 def resolveOSType(os_str):
-       if not os_str or os_str.find('Tikanga') != (-1) or os_str.find('FC6') 
!= (-1) or os_str.find('Zod') != (-1) or os_str.find('Moonshine') != (-1):
+       rhel5_clu_ver = [ 'Tikanga', 'Zod', 'Moonshine', 'Werewolf' ]
+       if not os_str or os_str in rhel5_clu_ver:
                return 'rhel5'
        else:
                return 'rhel4'
--- conga/luci/site/luci/Extensions/LuciClusterInfo.py  2008/01/02 21:00:31     
1.18
+++ conga/luci/site/luci/Extensions/LuciClusterInfo.py  2008/01/15 04:41:40     
1.19
@@ -575,6 +575,15 @@
                return {}
 
        clumap = {}
+       try:
+               cluster_os = model.getClusterOS()
+               if cluster_os.find('Tikanga'):
+                       os_minor = int(cluster_os[cluster_os.find('5.') + 2])
+                       if os_minor > 1:
+                               clumap['vm_migration_choice'] = True
+       except:
+               pass
+
        if not model:
                try:
                        model = getModelForCluster(self, cluname)
@@ -1487,6 +1496,15 @@
                        luci_log.debug_verbose('getVMInfo0: no service name')
                return vm_map
 
+       try:
+               cluster_os = model.getClusterOS()
+               if cluster_os.find('Tikanga'):
+                       os_minor = int(cluster_os[cluster_os.find('5.') + 2])
+                       if os_minor > 1:
+                               vm_map['vm_migration_choice'] = True
+       except:
+               pass
+
        vm_map['formurl'] = '%s?clustername=%s&pagetype=29&servicename=%s' \
                % (baseurl, clustername, svcname)
 
@@ -1537,7 +1555,7 @@
                return None
 
        try:
-               model = ModelBuilder(0, None, None, cluster_conf_node)
+               model = ModelBuilder(None, cluster_conf_node, rc.os())
                if not model:
                        raise Exception, 'ModelBuilder() returned None'
                model.setIsVirtualized(isVirtualized)
--- conga/luci/site/luci/Extensions/LuciValidation.py   2008/01/02 21:00:31     
1.2
+++ conga/luci/site/luci/Extensions/LuciValidation.py   2008/01/15 04:41:40     
1.3
@@ -1062,7 +1062,7 @@
 def validate_vmsvc_form(model, request):
        errors = list()
 
-       fvar = GetReqVars(request, [ 'vmname', 'oldname', 'vmpath', 'recovery', 
'domain', ])
+       fvar = GetReqVars(request, [ 'vmname', 'oldname', 'vmpath', 'recovery', 
'domain', 'migration_type'])
 
        vm_name = fvar['vmname']
        if vm_name is None:
@@ -1092,6 +1092,10 @@
        if recovery is not None and recovery != 'restart' and recovery != 
'relocate' and recovery != 'disable':
                errors.append('You entered an invalid recovery option "%s" for 
VM service "%s". Valid options are "restart" "relocate" and "disable"' % 
(recovery, vm_name))
 
+       migration_type = fvar['migration_type']
+       if migration_type is not None and migration_type != 'live' and 
migration_type != 'pause':
+               errors.append('Migration type must be either "live" or "pause"')
+
        if len(errors) > 0:
                return (False, {'errors': errors })
 
@@ -1130,6 +1134,8 @@
 
        xvm.addAttribute('autostart', str(autostart))
        xvm.addAttribute('exclusive', str(exclusive))
+       if migration_type:
+               xvm.addAttribute('migrate', str(migration_type))
 
        fdom = fvar['domain']
        if fdom:
--- conga/luci/site/luci/Extensions/LuciZopeExternal.py 2008/01/02 21:00:31     
1.5
+++ conga/luci/site/luci/Extensions/LuciZopeExternal.py 2008/01/15 04:41:40     
1.6
@@ -14,8 +14,8 @@
        getDefaultUser
 
 from cluster_adapters import clusterTaskProcess, \
-       resourceDelete, serviceDelete, \
-       isClusterBusy, nodeTaskProcess, process_cluster_conf_editor, \
+       resourceDelete, serviceDelete, isClusterBusy, nodeTaskProcess, \
+       process_cluster_conf_editor, \
        serviceMigrate, serviceRestart, serviceStart, serviceStop, \
        getResourceInfo, getSystemLogs
 
--- conga/luci/site/luci/Extensions/homebase_adapters.py        2008/01/02 
21:00:32     1.54
+++ conga/luci/site/luci/Extensions/homebase_adapters.py        2008/01/15 
04:41:40     1.55
@@ -201,7 +201,7 @@
        try:
                cur_host_trusted = request.form.has_key('host_is_trusted')
        except:
-               cur_host_trusted = False
+               cur_host_trusted = not check_certs
 
        trust_shown = False
        try:
--- conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py        
2008/01/02 20:56:08     1.14
+++ conga/luci/site/luci/Extensions/ClusterModel/ModelBuilder.py        
2008/01/15 04:41:40     1.15
@@ -50,8 +50,8 @@
 from Rm import Rm
 from Altname import Altname
 
-DLM_TYPE       = 0
-GULM_TYPE      = 1
+DLM_TYPE    = 0
+GULM_TYPE   = 1
 
 TAGNAMES = { 'cluster': Cluster,
              'clusternodes': ClusterNodes,
@@ -119,8 +119,10 @@
 
 
 class ModelBuilder:
-  def __init__(self, lock_type, filename=None, mcast_addr=None, domm=None):
-    self.filename = filename
+  def __init__(self, mcast_addr=None, domm=None, cluster_os=None):
+    if domm is None:
+      raise Exception, 'No cluster configuration'
+
     self.lock_type = DLM_TYPE
     self.mcast_address = mcast_addr
     self.mcast_interface = None
@@ -141,43 +143,25 @@
     self.fence_xvmd_ptr = None
     self.unusual_items = list()
     self.isVirtualized = False
+    self.cluster_os = cluster_os 
+
     if mcast_addr is None:
       self.usesMulticast = False
     else:
       self.usesMulticast = True
 
-    if domm is not None:
-      self.parent = domm
-      self.object_tree = self.buildModel(None)
-      self.check_empty_ptrs()
-      self.check_fence_daemon()
-      self.resolve_fence_instance_types()
-      self.purgePCDuplicates()
-      self.resolve_references()
-      self.check_for_multicast()
-      self.check_for_nodeids()
-    else:
-      if filename is None:
-        if lock_type == DLM_TYPE:
-          self.lock_type = DLM_TYPE
-          self.object_tree = self.buildDLMModelTemplate()
-        else:
-          self.lock_type = GULM_TYPE
-          self.object_tree = self.buildGULMModelTemplate()
-      else:
-        try:
-          self.parent = minidom.parse(self.filename)
-        except IOError, e:
-          pass
-
-        self.object_tree = self.buildModel(None)
-        self.check_empty_ptrs()
-        self.check_fence_daemon()
-        self.resolve_fence_instance_types()
-        self.purgePCDuplicates()
-        self.resolve_references()
-        self.check_for_multicast()
+    self.parent = domm
+    self.object_tree = self.buildModel(None)
+    self.check_empty_ptrs()
+    self.check_fence_daemon()
+    self.resolve_fence_instance_types()
+    self.purgePCDuplicates()
+    self.resolve_references()
+    self.check_for_multicast()
+    self.check_for_nodeids()
 
+  def getClusterOS(self):
+    return self.cluster_os
 
   def buildModel(self, parent_node, parent_object=None):
 
--- conga/luci/cluster/cluster_svc-macros       2008/01/02 20:52:22     1.2
+++ conga/luci/cluster/cluster_svc-macros       2008/01/15 04:41:41     1.3
@@ -140,6 +140,8 @@
 </div>
 
 <div metal:define-macro="vmadd-form">
+       <tal:block tal:define="
+               global clusterinfo python: here.getClusterInfo(modelb, 
request)" />
 <form method="post" action="">
        <input type="hidden" name="clustername"
                tal:attributes="value request/clustername | nothing" />
@@ -178,6 +180,7 @@
                                        </select>
                                </td>
                        </tr>
+
                        <tr class="systemsTable">
                                <td>Recovery policy</td>
                                <td>
@@ -189,6 +192,19 @@
                                        </select>
                                </td>
                        </tr>
+
+                       <tr class="systemsTable"
+                               
tal:condition="exists:clusterinfo/vm_migration_choice">
+
+                               <td>Migration type</td>
+                               <td>
+                                       <select name="migration_type">
+                                               <option value="live" 
selected="selected">Live</option>
+                                               <option 
value="pause">Pause</option>
+                                       </select>
+                               </td>
+                       </tr>
+                                               
                        <tr class="systemsTable"><td colspan="2">
                                <div class="hbSubmit">
                                        <input type="submit" value="Create 
Virtual Machine Service" />
@@ -343,6 +359,21 @@
                                        </select>
                                </td>
                        </tr>
+
+                       <tr class="systemsTable"
+                               
tal:condition="exists:vminfo/vm_migration_choice">
+
+                               <td>Migration type</td>
+                               <td>
+                                       <select name="migration_type">
+                                               <option value="live" 
tal:content="string:Live"
+                                                       
tal:attributes="selected python:('migrate' not in vminfo or vminfo['migrate'] 
!= 'pause') and 'selected' or ''" />
+                                               <option value="pause" 
tal:content="string:Pause"
+                                                       
tal:attributes="selected python:('migrate' in vminfo and vminfo['migrate'] == 
'pause') and 'selected' or ''" />
+                                       </select>
+                               </td>
+                       </tr>
+                                               
                        <tr class="systemsTable"><td colspan="2">
                                <div class="hbSubmit">
                                        <input name="submit" type="submit" 
value="Update Virtual Machine Service" />
--- conga/Makefile      2007/09/11 16:02:16     1.14
+++ conga/Makefile      2008/01/15 04:41:41     1.15
@@ -1,6 +1,6 @@
 
################################################################################
 ##
-## Copyright (C) 2005-2007 Red Hat, Inc. All rights reserved.
+## Copyright (C) 2005-2008 Red Hat, Inc. All rights reserved.
 ##
 ## This copyrighted material is made available to anyone wishing to use,
 ## modify, copy, or redistribute it subject to the terms and conditions
--- conga/clustermon.spec.in.in 2007/10/10 20:09:46     1.34
+++ conga/clustermon.spec.in.in 2008/01/15 04:41:41     1.35
@@ -1,6 +1,6 @@
 ##############################################################################
 #
-# Copyright (C) 2006-2007 Red Hat, Inc. All rights reserved.
+# Copyright (C) 2006-2008 Red Hat, Inc. All rights reserved.
 #
 # This copyrighted material is made available to anyone wishing to use,
 # modify, copy, or redistribute it subject to the terms and conditions
--- conga/conga.spec.in.in      2008/01/14 20:51:42     1.92
+++ conga/conga.spec.in.in      2008/01/15 04:41:41     1.93
@@ -303,6 +303,7 @@
 - Fixed bz337041 (Add option to not fail-back service)
 - Fixed bz264161 (RFE: support setting the "__independent_subtree" attribute 
on cluster resources)
 - Fixed bz239387 (RFE: add timeouts for actions that can leave cluster 
unreachable)
+- Fixed bz383071 (Virtual machine configuration - add field for "migration 
type" xml attr = "migrate")
 
 * Mon Aug 27 2007 Ryan McCabe <[EMAIL PROTECTED]> 0.10.0-6
 - Fixed bz253783

Reply via email to