def _register_host(self, app, args): if not app.docker: self.debug('App is not docker. Skip registering host') return None, None hostdn = ucr_get(app.ucr_hostdn_key) lo, pos = self._get_ldap_connection(args) if hostdn: if lo.get(hostdn): self.log('Already found %s as a host for %s. Better do nothing...' % (hostdn, app.id)) return hostdn, None else: self.warn('%s should be the host for %s. But it was not found in LDAP. Creating a new one' % (hostdn, app.id)) # quasi unique hostname; make sure it does not exceed 14 chars # 5 chars of appid + '-' + 8 digits of Epoch hostname = '%s-%s' % (app.id[:5], str(int((time.time() * 1000000)))[-10:-2]) password = generate_password() self.log('Registering the container host %s for %s' % (hostname, app.id)) if app.docker_server_role == 'memberserver': base = 'cn=memberserver,cn=computers,%s' % ucr_get('ldap/base') else: base = 'cn=dc,cn=computers,%s' % ucr_get('ldap/base') while base and not lo.get(base): base = dn2str(str2dn(base)[1:]) pos.setDn(base) domain = ucr_get('domainname') description = '%s (%s)' % (app.name, app.version) policies = ['cn=app-release-update,cn=policies,%s' % ucr_get('ldap/base'), 'cn=app-update-schedule,cn=policies,%s' % ucr_get('ldap/base')] obj = create_object_if_not_exists('computers/%s' % app.docker_server_role, lo, pos, name=hostname, description=description, domain=domain, password=password, objectFlag='docker', policies=policies) ucr_save({app.ucr_hostdn_key: obj.dn}) return obj.dn, password
def create_database(self): self.setup() password = self._read_password() exists = False if password: database_logger.debug('Password already exists') if self.db_user_exists() and self.db_exists(): database_logger.debug('Database and User already exist') exists = True if not exists: database_logger.info('Creating database for %s' % self.app) password = password or generate_password() self.create_db_and_user(password) self._write_password(password) else: database_logger.info('%s already has its database' % self.app)