def clean(self): cleaned_data = super(CloneDatabaseForm, self).clean() if 'database_clone' in cleaned_data: origindatabase = Database.objects.get(pk=cleaned_data['origin_database_id']) for infra in DatabaseInfra.objects.filter(environment=origindatabase.environment,plan=origindatabase.plan): if infra.databases.filter(name=cleaned_data['database_clone']): self._errors["database_clone"] = self.error_class([_("this name already exists in the selected environment")]) if len(cleaned_data['database_clone']) > 40: self._errors["database_clone"] = self.error_class([_("Database name too long")]) dbs = origindatabase.team.databases_in_use_for(origindatabase.environment) database_alocation_limit = origindatabase.team.database_alocation_limit LOG.debug("dbs: %s | type: %s" % (dbs, type(dbs))) if (database_alocation_limit != 0 and len(dbs) >= database_alocation_limit): LOG.warning("The database alocation limit of %s has been exceeded for the team: %s => %s" % (database_alocation_limit, origindatabase.team, list(dbs))) raise forms.ValidationError([_("The database alocation limit of %s has been exceeded for the team: %s => %s") % (database_alocation_limit, origindatabase.team, list(dbs))]) driver = DriverFactory.get_driver_class(origindatabase.plan.engines[0].name) if cleaned_data['database_clone'] in driver.RESERVED_DATABASES_NAME: raise forms.ValidationError(_("%s is a reserved database name" % cleaned_data['database_clone'])) if self._errors: return cleaned_data return cleaned_data
def clean(self): cleaned_data = super(CloneDatabaseForm, self).clean() if 'database_clone' in cleaned_data: origindatabase = Database.objects.get(pk=cleaned_data['origin_database_id']) #for infra in DatabaseInfra.objects.filter(environment=origindatabase.environment,plan=origindatabase.plan): # if infra.databases.filter(name=cleaned_data['database_clone']): # self._errors["database_clone"] = self.error_class([_("this name already exists in the selected environment")]) if len(cleaned_data['database_clone']) > 40: self._errors["database_clone"] = self.error_class([_("Database name too long")]) dbs = origindatabase.team.databases_in_use_for(origindatabase.environment) database_alocation_limit = origindatabase.team.database_alocation_limit LOG.debug("dbs: %s | type: %s" % (dbs, type(dbs))) if (database_alocation_limit != 0 and len(dbs) >= database_alocation_limit): LOG.warning("The database alocation limit of %s has been exceeded for the team: %s => %s" % (database_alocation_limit, origindatabase.team, list(dbs))) raise forms.ValidationError([_("The database alocation limit of %s has been exceeded for the team: %s => %s") % (database_alocation_limit, origindatabase.team, list(dbs))]) driver = DriverFactory.get_driver_class(origindatabase.plan.engines[0].name) if cleaned_data['database_clone'] in driver.RESERVED_DATABASES_NAME: raise forms.ValidationError(_("%s is a reserved database name" % cleaned_data['database_clone'])) if self._errors: return cleaned_data return cleaned_data
def _validate_name(self, cleaned_data): if len(cleaned_data['name']) > 40: self._errors["name"] = self.error_class( [_("Database name too long")]) plan = cleaned_data['plan'] driver = DriverFactory.get_driver_class(plan.engines[0].name) if cleaned_data['name'] in driver.RESERVED_DATABASES_NAME: raise forms.ValidationError( _("%s is a reserved database name" % cleaned_data['name']))
def clean(self): cleaned_data = super(DatabaseForm, self).clean() # if there is an instance, that means that we are in a edit page and therefore # it should return the default cleaned_data if self.instance and self.instance.id: return cleaned_data # TODO: change model field to blank=False if 'team' in cleaned_data: team = cleaned_data['team'] LOG.debug("team: %s" % team) if not team: LOG.warning("No team specified in database form") self._errors["team"] = self.error_class([_("Team: This field is required.")]) if not self.is_valid(): raise forms.ValidationError(self.errors) if len(cleaned_data['name']) > 40: self._errors["name"] = self.error_class([_("Database name too long")]) if 'plan' in cleaned_data: plan = cleaned_data.get('plan', None) if not plan: self._errors["plan"] = self.error_class([_("Plan: This field is required.")]) if 'environment' in cleaned_data: environment = cleaned_data.get('environment', None) if not environment or environment not in plan.environments.all(): raise forms.ValidationError(_("Invalid plan for selected environment.")) #validate if the team has available resources dbs = team.databases_in_use_for(environment) database_alocation_limit = team.database_alocation_limit LOG.debug("dbs: %s | type: %s" % (dbs, type(dbs))) if (database_alocation_limit != 0 and len(dbs) >= database_alocation_limit): LOG.warning("The database alocation limit of %s has been exceeded for the selected team %s => %s" % (database_alocation_limit, team, list(dbs))) self._errors["team"] = self.error_class([_("The database alocation limit of %s has been exceeded for the selected team: %s") % (database_alocation_limit, list(dbs))]) for infra in DatabaseInfra.objects.filter(environment=environment,plan=plan): if infra.databases.filter(name=cleaned_data['name']): self._errors["name"] = self.error_class([_("this name already exists in the selected environment")]) driver = DriverFactory.get_driver_class(plan.engines[0].name) if 'name' in cleaned_data and cleaned_data['name'] in driver.RESERVED_DATABASES_NAME: raise forms.ValidationError(_("%s is a reserved database name" % cleaned_data['name'])) if self._errors: return cleaned_data return cleaned_data
def clean(self): cleaned_data = super(DatabaseForm, self).clean() # if there is an instance, that means that we are in a edit page and therefore # it should return the default cleaned_data if self.instance and self.instance.id: return cleaned_data # TODO: change model field to blank=False if 'team' in cleaned_data: team = cleaned_data['team'] LOG.debug("team: %s" % team) if not team: LOG.warning("No team specified in database form") self._errors["team"] = self.error_class([_("Team: This field is required.")]) if not self.is_valid(): raise forms.ValidationError(self.errors) if len(cleaned_data['name']) > 40: self._errors["name"] = self.error_class([_("Database name too long")]) if 'plan' in cleaned_data: plan = cleaned_data.get('plan', None) if not plan: self._errors["plan"] = self.error_class([_("Plan: This field is required.")]) if 'environment' in cleaned_data: environment = cleaned_data.get('environment', None) if not environment or environment not in plan.environments.all(): raise forms.ValidationError(_("Invalid plan for selected environment.")) #validate if the team has available resources dbs = team.databases_in_use_for(environment) database_alocation_limit = team.database_alocation_limit LOG.debug("dbs: %s | type: %s" % (dbs, type(dbs))) if (database_alocation_limit != 0 and len(dbs) >= database_alocation_limit): LOG.warning("The database alocation limit of %s has been exceeded for the selected team %s => %s" % (database_alocation_limit, team, list(dbs))) self._errors["team"] = self.error_class([_("The database alocation limit of %s has been exceeded for the selected team: %s") % (database_alocation_limit, list(dbs))]) #for infra in DatabaseInfra.objects.filter(environment=environment,): # if infra.databases.filter(name=cleaned_data['name']): # self._errors["name"] = self.error_class([_("this name already exists in the selected environment")]) driver = DriverFactory.get_driver_class(plan.engines[0].name) if 'name' in cleaned_data and cleaned_data['name'] in driver.RESERVED_DATABASES_NAME: raise forms.ValidationError(_("%s is a reserved database name" % cleaned_data['name'])) if self._errors: return cleaned_data return cleaned_data
def _validate_name(self, cleaned_data): if len(cleaned_data['name']) > 40: self._errors["name"] = self.error_class( [_("Database name too long")]) plan = cleaned_data['plan'] class_path = plan.replication_topology.class_path driver_name = get_replication_topology_instance(class_path).driver_name driver = DriverFactory.get_driver_class(driver_name) if cleaned_data['name'] in driver.RESERVED_DATABASES_NAME: raise forms.ValidationError( _("%s is a reserved database name" % cleaned_data['name']))
def get_resize_settings(engine_type): db_driver_class = DriverFactory.get_driver_class(driver_name=engine_type) return db_driver_class.RESIZE
def get_clone_settings(engine_type): db_driver_class = DriverFactory.get_driver_class(driver_name=engine_type) return db_driver_class.CLONE
def get_deploy_settings(engine_type): db_driver_class = DriverFactory.get_driver_class(driver_name=engine_type) return db_driver_class.DEPLOY
def get_resize_settings(engine_type): db_driver_class = DriverFactory.get_driver_class(driver_name= engine_type) return db_driver_class.RESIZE
def get_clone_settings(engine_type): db_driver_class = DriverFactory.get_driver_class(driver_name= engine_type) return db_driver_class.CLONE
def get_deploy_settings(engine_type): db_driver_class = DriverFactory.get_driver_class(driver_name= engine_type) return db_driver_class.DEPLOY