def update_config(omerodir): """ Updates OMERO config with certificate properties if necessary """ cfg = ConfigXml(os.path.join(omerodir, "etc", "grid", "config.xml")) cfgdict = cfg.as_map() def set_if_empty(cfgkey, default): if not cfgdict.get(cfgkey): cfg[cfgkey] = default log.info("Setting %s=%s", cfgkey, default) set_if_empty( "omero.glacier2.IceSSL.DefaultDir", os.path.join(cfgdict.get("omero.data.dir", "/OMERO"), "certs"), ) set_if_empty("omero.certificates.commonname", "localhost") set_if_empty("omero.certificates.owner", "/L=OMERO/O=OMERO.server") set_if_empty("omero.certificates.key", "server.key") set_if_empty("omero.glacier2.IceSSL.CertFile", "server.p12") set_if_empty("omero.glacier2.IceSSL.CAs", "server.pem") set_if_empty("omero.glacier2.IceSSL.Password", "secret") set_if_empty("omero.glacier2.IceSSL.Ciphers", "HIGH") set_if_empty("omero.glacier2.IceSSL.ProtocolVersionMax", "TLS1_2") set_if_empty("omero.glacier2.IceSSL.Protocols", "TLS1_0,TLS1_1,TLS1_2") cfgdict = cfg.as_map() cfg.close() return cfgdict
def testSettings510Upgrade(self): """ When upgraded 5.0.x properties to 5.1.0 or later, if omero.web.ui.top_links is set, we need to prepend 'Data', 'History' and 'Help' links """ beforeUpdate = '[["Figure", "figure_index"]]' afterUpdate = '[["Data", "webindex", ' \ '{"title": "Browse Data via Projects, Tags etc"}], ' \ '["History", "history", ' \ '{"title": "History"}], ' \ '["Help", "https://help.openmicroscopy.org/", ' \ '{"target": "new", "title": ' \ '"Open OMERO user guide in a new tab"}], ' \ '["Figure", "figure_index"]]' p = create_path() XML = Element("icegrid") active = SubElement(XML, "properties", id="__ACTIVE__") default = SubElement(XML, "properties", id="default") for properties in (active, default): # Include a property to indicate version is post-4.2.0 SubElement(properties, "property", name="omero.config.version", value="4.2.1") SubElement(properties, "property", name="omero.web.ui.top_links", value=beforeUpdate) string = tostring(XML, 'utf-8') txt = xml.dom.minidom.parseString(string).toprettyxml(" ", "\n", None) p.write_text(txt) config = ConfigXml(filename=str(p), env_config="default") try: m = config.as_map() assert m["omero.web.ui.top_links"] == afterUpdate finally: config.close() # After config.close() calls config.save() new version should be 5.1.0 config = ConfigXml(filename=str(p), env_config="default") try: # Check version has been updated assert config.version() == "5.1.0" m = config.as_map() # And that top_links has not been modified further assert m["omero.web.ui.top_links"] == afterUpdate finally: config.close()
def testSettings510Upgrade(self): """ When upgraded 5.0.x properties to 5.1.0 or later, if omero.web.ui.top_links is set, we need to prepend 'Data', 'History' and 'Help' links """ beforeUpdate = '[["Figure", "figure_index"]]' afterUpdate = '[["Data", "webindex", ' \ '{"title": "Browse Data via Projects, Tags etc"}], ' \ '["History", "history", ' \ '{"title": "History"}], ' \ '["Help", "http://help.openmicroscopy.org/", ' \ '{"target": "new", "title": ' \ '"Open OMERO user guide in a new tab"}], ' \ '["Figure", "figure_index"]]' p = create_path() XML = Element("icegrid") active = SubElement(XML, "properties", id="__ACTIVE__") default = SubElement(XML, "properties", id="default") for properties in (active, default): # Include a property to indicate version is post-4.2.0 SubElement( properties, "property", name="omero.config.version", value="4.2.1") SubElement( properties, "property", name="omero.web.ui.top_links", value=beforeUpdate) string = tostring(XML, 'utf-8') txt = xml.dom.minidom.parseString(string).toprettyxml(" ", "\n", None) p.write_text(txt) config = ConfigXml(filename=str(p), env_config="default") try: m = config.as_map() assert m["omero.web.ui.top_links"] == afterUpdate finally: config.close() # After config.close() calls config.save() new version should be 5.1.0 config = ConfigXml(filename=str(p), env_config="default") try: # Check version has been updated assert config.version() == "5.1.0" m = config.as_map() # And that top_links has not been modified further assert m["omero.web.ui.top_links"] == afterUpdate finally: config.close()
def test421Upgrade(self): """ When upgraded 4.2.0 properties to 4.2.1, ${dn} items in omero.ldap.* properties are changed to @{dn} """ p = create_path() # How config was written in 4.2.0 XML = Element("icegrid") active = SubElement(XML, "properties", id="__ACTIVE__") default = SubElement(XML, "properties", id="default") for properties in (active, default): SubElement( properties, "property", name="omero.config.version", value="4.2.0") SubElement( properties, "property", name="omero.ldap.new_user_group", value="member=${dn}") SubElement( properties, "property", name="omero.ldap.new_user_group_2", value="member=$${omero.dollar}{dn}") string = tostring(XML, 'utf-8') txt = xml.dom.minidom.parseString(string).toprettyxml(" ", "\n", None) p.write_text(txt) config = ConfigXml(filename=str(p), env_config="default") try: m = config.as_map() assert "member=@{dn}" == m["omero.ldap.new_user_group"] assert "member=@{dn}" == m["omero.ldap.new_user_group_2"] finally: config.close()
def test_4(self, input, output): p = write_config(input) config = ConfigXml(filename=str(p), env_config="default") try: m = config.as_map() s = strip_dict(m, suffix="blitz") assert s == output finally: config.close()
def testNewVersioning(self): """ All property blocks should always have a version set. """ p = create_path() config = ConfigXml(filename=str(p)) m = config.as_map() for k, v in m.items(): assert "4.2.1" == v
def testNewVersioning(self): """ All property blocks should always have a version set. """ p = create_path() config = ConfigXml(filename=str(p)) m = config.as_map() for k, v in m.items(): assert "5.1.0" == v
def get_config(self, raise_missing=True): """ Returns a dictionary of all OMERO config properties """ configxml = os.path.join(self.dir, 'etc', 'grid', 'config.xml') try: configobj = ConfigXml(configxml, read_only=True) except Exception as e: log.warning('config.xml not found: %s', e) if raise_missing: raise return {} cfgdict = configobj.as_map() configobj.close() return cfgdict
def get_config(omerodir): configxml = ConfigXml(os.path.join(omerodir, "etc", "grid", "config.xml")) try: return configxml.as_map() finally: configxml.close()