summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRenuka Apte <renuka.apte@citrix.com>2012-05-29 11:45:57 -0700
committerRenuka Apte <renuka.apte@citrix.com>2012-06-11 15:39:41 -0700
commit9e337dac2960bbe8eaa4fbe3a8e5ca3e5e228936 (patch)
tree141ef817aba2c90b990b274e3c718924436d7e44
parentb1b09368f07b178416949b045f459bd00ec491a3 (diff)
downloadnova-9e337dac2960bbe8eaa4fbe3a8e5ca3e5e228936.tar.gz
nova-9e337dac2960bbe8eaa4fbe3a8e5ca3e5e228936.tar.xz
nova-9e337dac2960bbe8eaa4fbe3a8e5ca3e5e228936.zip
Revert "Fix nova-manage backend_add with sr_uuid"
Fixes bug 988596 Change 77495cfe breaks storage manager, as it makes a wrong assumption about nova-manage. The sr-uuid must be generated and provided by the xenapi storage manager. When the volume service is started, SM volume driver will create a new SR for everything that does not have an existing sr_uuid and will populate the db with the result. It will only introduce the SRs that do have one. The introduce will work only if the uuid provided is something SM understands. This partially reverts commit 77495cfed17f12f225e11fbc10e0f8db516dadf2. Changes in db are left intact. Change-Id: I8405ac905a15f829f704951b94297f3b6f6c0a29
-rwxr-xr-xbin/nova-manage43
1 files changed, 21 insertions, 22 deletions
diff --git a/bin/nova-manage b/bin/nova-manage
index ce8a6d794..be1159f54 100755
--- a/bin/nova-manage
+++ b/bin/nova-manage
@@ -1331,26 +1331,11 @@ class StorageManagerCommands(object):
# TODO(renukaapte) Add backend_introduce.
ctxt = context.get_admin_context()
params = dict(map(self._splitfun, args))
- sr_uuid = utils.gen_uuid()
-
- if flavor_label is None:
- print "error: backend needs to be associated with flavor"
- sys.exit(2)
-
- try:
- flavors = db.sm_flavor_get(ctxt, flavor_label)
-
- except exception.NotFound as ex:
- print "error: %s" % ex
- sys.exit(2)
-
- config_params = " ".join(['%s=%s' %
- (key, params[key]) for key in params])
if 'sr_uuid' in params:
- sr_uuid = params['sr_uuid']
try:
- backend = db.sm_backend_conf_get_by_sr(ctxt, sr_uuid)
+ backend = db.sm_backend_conf_get_by_sr(ctxt,
+ params['sr_uuid'])
except exception.DBError, e:
_db_error(e)
@@ -1361,24 +1346,38 @@ class StorageManagerCommands(object):
if c == 'y' or c == 'Y':
try:
db.sm_backend_conf_update(ctxt, backend['id'],
- dict(created=False,
- flavor_id=flavors['id'],
- sr_type=sr_type,
- config_params=config_params))
+ dict(created=False))
except exception.DBError, e:
_db_error(e)
return
else:
print 'Backend config not found. Would you like to create it?'
+ print '(WARNING: Creating will destroy all data on backend!!!)'
+ c = raw_input('Proceed? (y/n) ')
+ if c != 'y' and c != 'Y':
+ return
print '(WARNING: Creating will destroy all data on backend!!!)'
c = raw_input('Proceed? (y/n) ')
if c == 'y' or c == 'Y':
+ if flavor_label is None:
+ print "error: backend needs to be associated with flavor"
+ sys.exit(2)
+
+ try:
+ flavors = db.sm_flavor_get(ctxt, flavor_label)
+ except exception.NotFound as ex:
+ print "error: %s" % ex
+ sys.exit(2)
+
+ config_params = "".join(['%s=%s ' %
+ (key, params[key]) for key in params])
+
try:
db.sm_backend_conf_create(ctxt,
dict(flavor_id=flavors['id'],
- sr_uuid=sr_uuid,
+ sr_uuid=None,
sr_type=sr_type,
config_params=config_params))
except exception.DBError, e: