use of org.bf2.srs.fleetmanager.rest.publicapi.beans.Registry in project srs-fleet-manager by bf2fc6cc711aee1a0c2a.
the class CheckReadPermissionsInterceptor method intercept.
@AroundInvoke
public Object intercept(InvocationContext context) throws Exception {
if (isResolvable(securityIdentity)) {
final AccountInfo accountInfo = authService.extractAccountInfo();
final Optional<RegistryData> registry = storage.getRegistryById(context.getParameters()[0].toString());
if (userCanReadInstance(accountInfo, registry)) {
return context.proceed();
}
} else {
return context.proceed();
}
// TODO Refactor for readability
log.info("Attempt to read registry instance without the proper permissions");
throw new ForbiddenException();
}
use of org.bf2.srs.fleetmanager.rest.publicapi.beans.Registry in project srs-fleet-manager by bf2fc6cc711aee1a0c2a.
the class FileQuotaPlansService method init.
@Override
public void init() throws IOException {
log.debug("Using FileQuotaPlansService implementation of QuotaPlansService");
if (plansConfigFile.isEmpty()) {
throw new IllegalArgumentException("Error in static quota plans config: Property 'registry.quota.plans.config.file' is required.");
}
log.info("Loading registry quota plans config file from {}", plansConfigFile.get().getAbsolutePath());
YAMLMapper mapper = SerDesObjectMapperProducer.getYAMLMapper();
QuotaPlansConfigList quotaPlansConfigList = mapper.readValue(plansConfigFile.get(), QuotaPlansConfigList.class);
List<QuotaPlan> staticQuotaPlans = quotaPlansConfigList.getPlans();
Set<String> names = new HashSet<>();
List<String> duplicatedNames = staticQuotaPlans.stream().map(d -> {
Set<ConstraintViolation<QuotaPlan>> errors = validator.validate(d);
if (!errors.isEmpty()) {
throw new ConstraintViolationException(errors);
}
return d;
}).filter(d -> !names.add(d.getName())).map(d -> d.getName()).collect(Collectors.toList());
if (!duplicatedNames.isEmpty()) {
throw new IllegalArgumentException("Error in static quota plans config, duplicated plan name: " + duplicatedNames.toString());
}
if (!names.contains(defaultQuotaPlan)) {
throw new IllegalArgumentException("Error in static quota plans config, default plan does not exist in plans config, default plan name: " + defaultQuotaPlan);
}
for (QuotaPlan p : staticQuotaPlans) {
tmClient.validateConfig(p.getResources());
plans.put(p.getName(), p);
}
List<OrganizationAssignment> staticOrganizationAssignments = quotaPlansConfigList.getOrganizations();
if (staticOrganizationAssignments == null)
staticOrganizationAssignments = Collections.emptyList();
for (OrganizationAssignment assignment : staticOrganizationAssignments) {
if (!plans.containsKey(assignment.getPlan())) {
throw new IllegalStateException("Could not find quota plan named '" + assignment.getPlan() + "' intended for organization ID '" + assignment.getOrgId() + "'");
}
organizationAssignments.put(assignment.getOrgId(), assignment);
}
if (quotaPlansConfigList.getReconcile() != null && quotaPlansConfigList.getReconcile()) {
reconcile();
}
}
use of org.bf2.srs.fleetmanager.rest.publicapi.beans.Registry in project srs-fleet-manager by bf2fc6cc711aee1a0c2a.
the class MigrationService method runMigration.
public void runMigration() throws TenantManagerServiceException {
if (deleteAll.isPresent() && deleteAll.get()) {
log.warn("Removing all data first");
TenantManagerConfig tm = TenantManagerConfig.builder().tenantManagerUrl("http://tenant-manager:8585").registryDeploymentUrl("https://service-registry-stage.apps.app-sre-stage-0.k3s7.p1.openshiftapps.com").build();
for (Tenant t : tenantManagerClient.getAllTenants(tm)) {
log.warn("Deleting tenant '{}'", t.getId());
try {
tenantManagerClient.deleteTenant(tm, t.getId());
} catch (TenantNotFoundServiceException ex) {
log.warn("Could not delete tenant '{}'. Tenant does not exist and may have been already deleted.", t.getId());
}
}
CleanResult cleanResult = flyway.clean();
log.info("Database clean result: " + "flywayVersion = '{}', " + "database = '{}', " + "schemasCleaned = '{}', " + "schemasDropped = '{}', " + "warnings = '{}'.", cleanResult.flywayVersion, cleanResult.database, cleanResult.schemasCleaned, cleanResult.schemasDropped, cleanResult.warnings);
}
MigrateResult migrateResult = flyway.migrate();
log.info("Database migrate result: " + "flywayVersion = '{}', " + "database = '{}', " + "initialSchemaVersion = '{}', " + "targetSchemaVersion = '{}', " + "migrations = '{}', " + "warnings = '{}'.", migrateResult.flywayVersion, migrateResult.database, migrateResult.initialSchemaVersion, migrateResult.targetSchemaVersion, migrateResult.migrations, migrateResult.warnings);
}
use of org.bf2.srs.fleetmanager.rest.publicapi.beans.Registry in project srs-fleet-manager by bf2fc6cc711aee1a0c2a.
the class RegistryDeprovisioningIT method testDeprovisionRegistryBasic.
@Test
void testDeprovisionRegistryBasic() {
FleetManagerApi.verifyApiIsSecured();
var alice = new AccountInfo("testDeprovisionRegistry", "alice", false, 10L);
var registry1 = new RegistryCreate();
registry1.setName("registry1");
var createdRegistry1 = FleetManagerApi.createRegistry(registry1, alice);
assertNotEquals(RegistryStatusValue.failed, createdRegistry1.getStatus());
Awaitility.await("registry1 available").atMost(30, SECONDS).pollInterval(5, SECONDS).until(() -> {
var reg = FleetManagerApi.getRegistry(createdRegistry1.getId(), alice);
return reg.getStatus().equals(RegistryStatusValue.ready);
});
Registry registry = FleetManagerApi.getRegistry(createdRegistry1.getId(), alice);
TenantManagerClient tenantManager = Utils.createTenantManagerClient();
var internalTenant = tenantManager.getTenant(registry.getId());
assertEquals(TenantStatusValue.READY, internalTenant.getStatus());
FleetManagerApi.deleteRegistry(createdRegistry1.getId(), alice);
// We don't have to wait for the status to be RegistryStatusValueRest.deleting, since that happens almost immediately now.
Awaitility.await("registry1 deleting initiated").atMost(5, SECONDS).pollInterval(1, SECONDS).until(() -> {
var tenant1 = tenantManager.getTenant(registry.getId());
return TenantStatusValue.TO_BE_DELETED.equals(tenant1.getStatus());
});
var req = new UpdateRegistryTenantRequest();
req.setStatus(TenantStatusValue.DELETED);
tenantManager.updateTenant(registry.getId(), req);
Awaitility.await("registry1 deleted").atMost(5, SECONDS).pollInterval(1, SECONDS).until(() -> {
try {
FleetManagerApi.verifyRegistryNotExists(createdRegistry1.getId(), alice);
return true;
} catch (AssertionError ex) {
return false;
}
});
}
use of org.bf2.srs.fleetmanager.rest.publicapi.beans.Registry in project srs-fleet-manager by bf2fc6cc711aee1a0c2a.
the class RegistryProvisioningIT method testProvisionRegistry.
@Test
void testProvisionRegistry() {
FleetManagerApi.verifyApiIsSecured();
var alice = new AccountInfo("testProvisionRegistry", "alice", false, 10L);
// verify static deployments config file feature
var deployment = new RegistryDeploymentCreateRest();
deployment.setName("test-deployment");
deployment.setTenantManagerUrl(infra.getTenantManagerUri());
deployment.setRegistryDeploymentUrl("http://registry-test");
FleetManagerApi.verifyCreateDeploymentNotAllowed(deployment, alice);
var registry1 = new RegistryCreate();
registry1.setName("test-registry-1");
var registry1Result = FleetManagerApi.createRegistry(registry1, alice);
assertNotEquals(RegistryStatusValue.failed, registry1Result.getStatus());
Awaitility.await("registry available").atMost(30, TimeUnit.SECONDS).pollInterval(5, TimeUnit.SECONDS).until(() -> {
var reg = FleetManagerApi.getRegistry(registry1Result.getId(), alice);
return reg.getStatus().equals(RegistryStatusValue.ready);
});
Registry registry = FleetManagerApi.getRegistry(registry1Result.getId(), alice);
TenantManagerClient tenantManager = Utils.createTenantManagerClient();
var internalTenant = tenantManager.getTenant(registry.getId());
var resources = internalTenant.getResources();
TenantResource maxTotalSchemas = null;
for (var r : resources) {
if (r.getType() == ResourceType.MAX_TOTAL_SCHEMAS_COUNT) {
maxTotalSchemas = r;
}
}
assertNotNull(maxTotalSchemas);
assertEquals(10, maxTotalSchemas.getLimit());
// TODO e2e test check limits are applied
// Delete
FleetManagerApi.deleteRegistry(registry1Result.getId(), alice);
}
Aggregations