[NEW PATCH] BZ#735725 - Add installation flow for the RHEVH (via gerrit-bot)
by Yotam Oron
New patch submitted by Yotam Oron (yoron(a)redhat.com)
You can review this change at: http://gerrit.usersys.redhat.com/918
commit 4db5b992337f3ad094bf132a0ccf7277e5530c6a
Author: Yotam Oron <yoron(a)redhat.com>
Date: Thu Sep 8 16:00:03 2011 +0300
BZ#735725 - Add installation flow for the RHEVH
- Add a 'ticket' variable in the vdsm-reg.conf
- Send the ticket with the regiatration request
- Delete ticket if registration is successful or retries quota is over
Change-Id: I31bf0bfc4b01b1fbb969d053b2fe003392bd402d
diff --git a/vdsm_reg/rhevm.py b/vdsm_reg/rhevm.py
index 7634497..38d55cd 100755
--- a/vdsm_reg/rhevm.py
+++ b/vdsm_reg/rhevm.py
@@ -69,11 +69,11 @@ def write_vdsm_config(rhevm_host, rhevm_port):
sed_cmd = "sed -i --copy \"s/\(^vdc_host_name=\)\(..*$\)/vdc_host_name="+rhevm_host+"/\" " + VDSM_REG_CONFIG
ret = os.system(sed_cmd)
if ret == 0:
- log("The RHEV Manager's address is set.\n")
+ log("The RHEV Manager's address is set: %s\n" % rhevm_host)
if rhevm_port != "":
sed_cmd = "sed -i --copy \"s/\(^vdc_host_port=\)\(..*$\)/vdc_host_port="+str(rhevm_port)+"/\" " + VDSM_REG_CONFIG
os.system(sed_cmd)
- log("The RHEV Manager's port set.\n")
+ log("The RHEV Manager's port set: %s\n" % rhevm_port)
fWriteConfig=1
else:
log("Either " + rhevm_host + " is an invalid address or the RHEV Manager unresponsive.\n")
@@ -122,8 +122,8 @@ class Plugin(PluginBase):
rhevm_grid.setField(Label("Management Server Port:"), 0, 1, anchorLeft = 1)
self.rhevm_server_port = Entry(6, "", scroll = 0)
self.rhevm_server_port.setCallback(self.valid_rhevm_server_port_callback)
- rhevm_grid.setField(self.rhevm_server, 1, 0, anchorLeft = 1, padding=(0, 0, 0, 0))
- rhevm_grid.setField(self.rhevm_server_port, 1, 1, anchorLeft = 1, padding=(0, 0, 0, 0))
+ rhevm_grid.setField(self.rhevm_server, 1, 0, anchorLeft = 1, padding=(2, 0, 0, 1))
+ rhevm_grid.setField(self.rhevm_server_port, 1, 1, anchorLeft = 1, padding=(2, 0, 0, 1))
elements.setField(rhevm_grid, 0, 1, anchorLeft = 1, padding = (0,0,0,0))
elements.setField(Label(""), 0, 2, anchorLeft = 1)
self.verify_rhevm_cert = Checkbox("Connect to RHEV Manager and Validate Certificate", isOn=True)
@@ -134,12 +134,12 @@ class Plugin(PluginBase):
pw_elements = Grid(3,3)
pw_elements.setField(Label("Password: "), 0, 1, anchorLeft = 1)
- self.root_password_1 = Entry(15,password = 1)
+ self.root_password_1 = Entry(15, password=1)
self.root_password_1.setCallback(self.password_check_callback)
pw_elements.setField(self.root_password_1, 1, 1)
pw_elements.setField(Label("Confirm Password: "), 0, 2, anchorLeft = 1)
- self.root_password_2 = Entry(15,password = 1)
+ self.root_password_2 = Entry(15, password=1)
self.root_password_2.setCallback(self.password_check_callback)
pw_elements.setField(self.root_password_2, 1, 2)
diff --git a/vdsm_reg/vdsm-reg-setup b/vdsm_reg/vdsm-reg-setup
index b1015b8..1a70c27 100755
--- a/vdsm_reg/vdsm-reg-setup
+++ b/vdsm_reg/vdsm-reg-setup
@@ -21,9 +21,11 @@ import traceback
import urllib
import ssl
from config import config
+from ConfigParser import NoOptionError
import deployUtil
import createDaemon
+TICKET_RETRIES=3
DEFAULT_CONFIG_FILE="/etc/vdsm-reg/vdsm-reg.conf"
VDSM_CONF="/etc/vdsm/vdsm.conf"
SCRIPT_NAME_SAVE="vdsm-store-net-config"
@@ -33,7 +35,7 @@ class Setup:
"""
Makes sure that vdsmd has its Certificate in place
"""
- def __init__(self):
+ def __init__(self, ticket=""):
logging.debug("__init__ begin.")
self.registered = False
self.fInitOK = True
@@ -58,6 +60,7 @@ class Setup:
self.vdcPORT = config.get('vars', 'vdc_host_port')
self.vdcURI = config.get('vars', 'vdc_reg_uri')
self.vdcRegPort = config.get('vars', 'vdc_reg_port')
+ self.ticket = ticket
self.VDCTime = None
logging.debug("Setup::__init__ vars:" +
"\n\tself.vdcURL " + self.vdcURL +
@@ -67,7 +70,8 @@ class Setup:
"\n\tself.ovirtURL " + self.ovirtURL +
"\n\tself.ovirtName " + self.ovirtName +
"\n\tself.ovirtUID " + self.ovirtUID +
- "\n\tself.vdcName " + self.vdcName
+ "\n\tself.vdcName " + self.vdcName +
+ "\n\tself.ticket " + self.ticket
)
def validateData(self):
@@ -117,13 +121,14 @@ class Setup:
def registerVDS(self):
logging.debug("registerVDS begin.")
-
+
+ ticket = "&ticket=" + urllib.quote(self.ticket) if self.ticket else ""
strFullURI = (
self.vdcURI + "?vds_ip=" + urllib.quote(self.ovirtURL) +
"&vds_name=" + urllib.quote(self.ovirtName) +
"&vds_unique_id=" + urllib.quote(self.ovirtUID) +
"&port=" + urllib.quote(self.vdcRegPort) +
- "&__VIEWSTATE="
+ "&__VIEWSTATE=" + ticket
)
logging.debug("registerVDS URI= " + strFullURI + "\n")
if self.ovirtUID == "None" and "localhost.localdomain" in self.ovirtName:
@@ -230,6 +235,12 @@ def run(confFile, daemonize):
try:
try:
config.read([confFile])
+ try:
+ ticket = config.get('vars', 'ticket')
+ ticketRetries = TICKET_RETRIES
+ except NoOptionError:
+ ticket = ""
+ ticketRetries = 0
loggerConf = config.get('vars','logger_conf')
vdsmDir = config.get('vars', 'vdsm_dir')
pidfile = config.get('vars','pidfile')
@@ -252,11 +263,19 @@ def run(confFile, daemonize):
itr = 0
while daemonize and not registered:
- oSetup = Setup()
+ oSetup = Setup(ticket=ticket)
if oSetup.validateData():
oSetup.execute()
- registered = oSetup.registered;
+ if ticketRetries:
+ ticketRetries = ticketRetries - 1
+ registered = oSetup.registered
oSetup = None
+ if ticket:
+ if registered or ticketRetries is 0:
+ config.remove_option('vars', 'ticket')
+ config.write(file(confFile, 'w+'))
+ deployUtil.ovirtfunctions.ovirt_store_config(confFile)
+ ticket = ""
itr += 1
nRandom = random.randint(1, 5)
if not registered:
12 years, 8 months
[NEW PATCH] BZ#735725 - Add root password configuration option in the rhevm tab (via gerrit-bot)
by Yotam Oron
New patch submitted by Yotam Oron (yoron(a)redhat.com)
You can review this change at: http://gerrit.usersys.redhat.com/913
commit f9204b3d30877f30da52be1423cfdbf62deaa666
Author: Yotam Oron <yoron(a)redhat.com>
Date: Wed Sep 7 18:41:32 2011 +0300
BZ#735725 - Add root password configuration option in the rhevm tab
- Add root password configuration option
- Enable remote access
Change-Id: I7347afde1656713bc9a455da784aad0e76660f4b
diff --git a/vdsm_reg/rhevm.py b/vdsm_reg/rhevm.py
index d9cc627..e0dfd1c 100755
--- a/vdsm_reg/rhevm.py
+++ b/vdsm_reg/rhevm.py
@@ -24,9 +24,12 @@
import os
import sys
from ovirtnode.ovirtfunctions import ovirt_store_config, is_valid_host_or_ip, \
- is_valid_port, PluginBase, log, network_up
+ is_valid_port, PluginBase, log, network_up, \
+ password_check, augtool
from snack import ButtonChoiceWindow, Entry, Grid, Label, Checkbox, \
- FLAG_DISABLED, FLAGS_SET
+ FLAG_DISABLED, FLAGS_SET, Textbox
+
+from ovirtnode.password import set_password
sys.path.append('/usr/share/vdsm-reg')
import deployUtil
@@ -104,7 +107,7 @@ class Plugin(PluginBase):
PluginBase.__init__(self, "RHEV-M", ncs)
def form(self):
- elements = Grid(2, 10)
+ elements = Grid(2, 8)
is_network_up = network_up()
if is_network_up:
header_message = "RHEV-M Configuration"
@@ -112,7 +115,6 @@ class Plugin(PluginBase):
header_message = "Network Down, RHEV-M Configuration Disabled"
elements.setField(Label(header_message), 0, 0, anchorLeft = 1)
- elements.setField(Label(""), 0, 1, anchorLeft = 1)
rhevm_grid = Grid(2,2)
rhevm_grid.setField(Label("Management Server:"), 0, 0, anchorLeft = 1)
self.rhevm_server = Entry(25, "")
@@ -120,14 +122,36 @@ class Plugin(PluginBase):
rhevm_grid.setField(Label("Management Server Port:"), 0, 1, anchorLeft = 1)
self.rhevm_server_port = Entry(6, "", scroll = 0)
self.rhevm_server_port.setCallback(self.valid_rhevm_server_port_callback)
- rhevm_grid.setField(self.rhevm_server, 1, 0, anchorLeft = 1, padding=(2, 0, 0, 1))
- rhevm_grid.setField(self.rhevm_server_port, 1, 1, anchorLeft = 1, padding=(2, 0, 0, 1))
- elements.setField(rhevm_grid, 0, 2, anchorLeft = 1, padding = (0,1,0,0))
+ rhevm_grid.setField(self.rhevm_server, 1, 0, anchorLeft = 1, padding=(0, 0, 0, 0))
+ rhevm_grid.setField(self.rhevm_server_port, 1, 1, anchorLeft = 1, padding=(0, 0, 0, 0))
+ elements.setField(rhevm_grid, 0, 1, anchorLeft = 1, padding = (0,0,0,0))
+ elements.setField(Label(""), 0, 2, anchorLeft = 1)
self.verify_rhevm_cert = Checkbox("Connect to RHEV Manager and Validate Certificate", isOn=True)
- elements.setField(self.verify_rhevm_cert, 0, 3, anchorLeft = 1, padding = (0,1,0,0))
+ elements.setField(self.verify_rhevm_cert, 0, 3, anchorLeft = 1, padding = (0,0,0,0))
+ elements.setField(Label(""), 0, 4, anchorLeft = 1)
+
+ elements.setField(Label("Root Password For Remote Access"), 0, 5, anchorLeft = 1)
+ pw_elements = Grid(3,3)
+
+ pw_elements.setField(Label("Password: "), 0, 1, anchorLeft = 1)
+ self.root_password_1 = Entry(15,password = 1)
+ self.root_password_1.setCallback(self.password_check_callback)
+ pw_elements.setField(self.root_password_1, 1, 1)
+
+ pw_elements.setField(Label("Confirm Password: "), 0, 2, anchorLeft = 1)
+ self.root_password_2 = Entry(15,password = 1)
+ self.root_password_2.setCallback(self.password_check_callback)
+ pw_elements.setField(self.root_password_2, 1, 2)
+ self.pw_msg = Textbox(60, 6, "", wrap=1)
+
+ elements.setField(pw_elements, 0, 6, anchorLeft=1)
+ elements.setField(self.pw_msg, 0, 7, padding = (0,0,0,0))
+
+ inputFields = [self.rhevm_server, self.rhevm_server_port, self.verify_rhevm_cert,
+ self.root_password_1, self.root_password_2]
if not is_network_up:
- for field in self.rhevm_server, self.rhevm_server_port, self.verify_rhevm_cert:
+ for field in inputFields:
field.setFlags(FLAG_DISABLED, FLAGS_SET)
try:
@@ -143,9 +167,18 @@ class Plugin(PluginBase):
pass
return [Label(""), elements]
+ def password_check_callback(self):
+ resp, msg = password_check(self.root_password_1.value(), self.root_password_2.value())
+ self.pw_msg.setText(msg)
+ return
+
def action(self):
self.ncs.screen.setColor("BUTTON", "black", "red")
self.ncs.screen.setColor("ACTBUTTON", "blue", "white")
+ if self.root_password_1.value() != "" and self.root_password_2.value() != "" and self.root_password_1.value() == self.root_password_2.value():
+ set_password(self.root_password_1.value(), "root")
+ augtool("set","/files/etc/ssh/sshd_config/PasswordAuthentication", "yes")
+ os.system("service sshd restart &>/dev/null")
if len(self.rhevm_server.value()) > 0:
if self.verify_rhevm_cert.selected():
if deployUtil.getRhevmCert(self.rhevm_server.value(), self.rhevm_server_port.value()):
12 years, 8 months
[NEW PATCH] man page: document behavior on hook failure (via gerrit-bot)
by Dan Kenigsberg
New patch submitted by Dan Kenigsberg (danken(a)redhat.com)
You can review this change at: http://gerrit.usersys.redhat.com/938
commit b87b70c6e4e7f63819583850415a11a8dada979d
Author: Dan Kenigsberg <danken(a)redhat.com>
Date: Wed Sep 14 21:45:36 2011 +0300
man page: document behavior on hook failure
per Geert Jansen's request.
Change-Id: Ida21cfa17ff5e76fecc410b9ed9d8aba329dee52
diff --git a/vdsm/vdsmd.8 b/vdsm/vdsmd.8
index b33340e..7eb70ce 100644
--- a/vdsm/vdsmd.8
+++ b/vdsm/vdsmd.8
@@ -104,6 +104,7 @@ domain with too much memory is started on a host:
.SS Hook return code
Hook script must return one of the following return codes:
+
.PD 0
.TP
.B
@@ -122,6 +123,9 @@ the hook script failed, no further hooks should be processed.
>2
reserved.
+.TP
+If a before_<action> hook fails, the <action> would be aborted.
+
.SH FILES
.PD 0
.TP
12 years, 8 months
[NEW PATCH] createVolume: fix default values for two args (via gerrit-bot)
by Dan Kenigsberg
New patch submitted by Dan Kenigsberg (danken(a)redhat.com)
You can review this change at: http://gerrit.usersys.redhat.com/937
commit 362d44166ee51463b5b5a3ecf141571906959373
Author: Dan Kenigsberg <danken(a)redhat.com>
Date: Wed Sep 14 22:13:58 2011 +0300
createVolume: fix default values for two args
When createVolume is called without specifying explicit values for
srcImgUUID and srcVolUUID, None value was passed done the chain, running
havoc in async task creation.
This was not noticed since vdsClient and RHEV-M fill these args with
volume.BLANK_UUID. This patch makes Vdsm itself follow suit and have
sane defaults.
Change-Id: If1befbba5e5b4cd649d7e50fe89055c5f3cccce1
diff --git a/vdsm/storage/spm.py b/vdsm/storage/spm.py
index bf5eae7..849b9d2 100644
--- a/vdsm/storage/spm.py
+++ b/vdsm/storage/spm.py
@@ -1410,7 +1410,7 @@ class SPM:
self.log.warning("spm.uploadVolume: SP %s SD %s img %s Vol %s - teardown failed")
- def public_createVolume(self, sdUUID, spUUID, imgUUID, size, volFormat, preallocate, diskType, volUUID, desc, srcImgUUID=None, srcVolUUID=None):
+ def public_createVolume(self, sdUUID, spUUID, imgUUID, size, volFormat, preallocate, diskType, volUUID, desc, srcImgUUID=volume.BLANK_UUID, srcVolUUID=volume.BLANK_UUID):
"""
Create a new volume
Function Type: SPM
12 years, 8 months
[NEW PATCH] BZ#726400 - Remove lvm operations from StoragePool.__rebuild(). (via gerrit-bot)
by ewarszaw@redhat.com
New patch submitted by Eduardo Warszawski (ewarszaw(a)redhat.com)
You can review this change at: http://gerrit.usersys.redhat.com/832
commit acf5fcd8c69b561161dadca39d1e18df77891160
Author: Eduardo Warszawski <ewarszaw(a)redhat.com>
Date: Thu Aug 18 16:23:51 2011 +0300
BZ#726400 - Remove lvm operations from StoragePool.__rebuild().
Change-Id: I712d57d3d16aba5e394ed42f247b14cf86c44b2d
diff --git a/vdsm/storage/sp.py b/vdsm/storage/sp.py
index 11d337c..09ff28c 100644
--- a/vdsm/storage/sp.py
+++ b/vdsm/storage/sp.py
@@ -19,6 +19,7 @@ import codecs
import constants
import storage_mailbox
import blockSD
+import fileSD
import sd
import misc
from misc import Event
@@ -508,6 +509,7 @@ class StoragePool:
def __masterMigrate(self, sdUUID, msdUUID, masterVersion):
curmsd = SDF.produce(sdUUID)
newmsd = SDF.produce(msdUUID)
+ self._refreshDomainLinks(newmsd)
curmsd.invalidateMetadata()
newmsd.upgrade(curmsd.getVersion())
@@ -861,24 +863,29 @@ class StoragePool:
if msdUUID in domUUIDs:
domUUIDs.remove(msdUUID)
- for domUUID in domUUIDs:
- try:
- d = SDF.produce(domUUID)
- except se.StorageDomainDoesNotExist:
- # We should not rebuild a non-master active domain
- # if it is disconnected. Log the error and continue
- self.log.error("pool %s metadata contains an unknown domain %s", self.spUUID, domUUID, exc_info=True)
- continue
-
- try:
- self._refreshDomainLinks(d)
- except (se.StorageException, OSError):
- self.log.error("Can't refresh domain links", exc_info=True)
- continue
- # Remove domain from potential cleanup
+ #TODO: Consider to remove this whole block. UGLY!
+ #We want to avoid lookups (vgs) of unknown block domains.
+ #domUUIDs includes all the domains, file or block.
+ #fileSDs includes local and NFS domains.
+ block_mountpoint = os.path.join(sd.StorageDomain.storage_repository,
+ sd.DOMAIN_MNT_POINT, sd.BLOCKSD_DIR)
+ domDirs = {} # {domUUID: domaindir}
+ for domUUID, domaindir in fileSD.scanDomains(): #[(fileDomUUID, file_domaindir)]
+ domDirs[domUUID] = domaindir
+ #domDirs contains only fileDomUUID: file_domainPath pairs until now.
+ #Add the block domains
+ blockDomUUIDs = [domUUID for domUUID in domUUIDs if domUUID not in domDirs.iterkeys()]
+ for domUUID in blockDomUUIDs:
+ domaindir = os.path.join(block_mountpoint, domUUID)
+ domDirs[domUUID] = domaindir
+ # create domain special volumes folder
+ domMD = os.path.join(domaindir, sd.DOMAIN_META_DATA)
+ fileUtils.createdir(domMD)
+ #Link all the domains to the pool
+ for domUUID, domaindir in domDirs.iteritems():
linkName = os.path.join(self.poolPath, domUUID)
- if linkName in oldLinks:
- oldLinks.remove(linkName)
+ self._linkStorageDomain(domainDir, linkName)
+
# Always try to build master links
try:
self._refreshDomainLinks(msd)
@@ -890,13 +897,14 @@ class StoragePool:
# Cleanup old trash from the pool
for oldie in oldLinks:
- try:
- os.remove(oldie)
- except OSError as e:
- if e.errno != errno.ENOENT:
- self.log.warn("Could not clean all trash from the pool dom `%s` (%s)", oldie, e)
- except Exception as e:
- self.log.warn("Could not clean all trash from the pool dom `%s` (%s)", oldie, e)
+ if oldie not in domUUIDs:
+ try:
+ os.remove(oldie)
+ except OSError as e:
+ if e.errno != errno.ENOENT:
+ self.log.warn("Could not clean all trash from the pool dom `%s` (%s)", oldie, e)
+ except Exception as e:
+ self.log.warn("Could not clean all trash from the pool dom `%s` (%s)", oldie, e)
def refresh(self, msdUUID=None, masterVersion=None):
12 years, 8 months
[NEW PATCH] Assign local variable before reference it (via gerrit-bot)
by Igor Lvovsky
New patch submitted by Igor Lvovsky (ilvovsky(a)redhat.com)
You can review this change at: http://gerrit.usersys.redhat.com/939
commit ad36fbcbb2d7501f277e3ad29557cad4990e8666
Author: Igor Lvovsky <ilvovsky(a)redhat.com>
Date: Thu Sep 15 09:41:56 2011 +0300
Assign local variable before reference it
Change-Id: I2e9abf933648c51f4a8dd159b93b29ef85be4602
diff --git a/vdsm/guestIF.py b/vdsm/guestIF.py
index bd501b4..d896310 100644
--- a/vdsm/guestIF.py
+++ b/vdsm/guestIF.py
@@ -253,6 +253,7 @@ class GuestAgent (threading.Thread):
self._forward('refresh')
self._buffer = ''
while not self._stopped:
+ line = ''
try:
line = self._readLine()
# line is always None after stop() is called and the
12 years, 8 months