public ProjectInstance updateProject(ProjectInstance project, String newName, String newDesc, LinkedHashMap<String, String> overrideProps) throws IOException { try (AutoLock lock = prjMapLock.lockForWrite()) { Preconditions.checkArgument(project.getName().equals(newName)); project.setName(newName); project.setDescription(newDesc); project.setOverrideKylinProps(overrideProps); if (project.getUuid() == null) project.updateRandomUuid(); return save(project); } }
private void requireProject(ProjectInstance projectInstance) throws IOException { addRequired(projectInstance.getResourcePath()); List<RealizationEntry> realizationEntries = projectInstance.getRealizationEntries(); for (RealizationEntry realizationEntry : realizationEntries) { retrieveResourcePath(getRealization(realizationEntry)); } List<DataModelDesc> modelDescs = metadataManager.getModels(projectInstance.getName()); for (DataModelDesc modelDesc : modelDescs) { addRequired(DataModelDesc.concatResourcePath(modelDesc.getName())); } addOptional(badQueryHistoryManager.getBadQueriesForProject(projectInstance.getName()).getResourcePath()); }
public static ProjectInstance create(String name, String owner, String description, LinkedHashMap<String, String> overrideProps, List<RealizationEntry> realizationEntries, List<String> models) { ProjectInstance projectInstance = new ProjectInstance(); projectInstance.updateRandomUuid(); projectInstance.setName(name); projectInstance.setOwner(owner); projectInstance.setDescription(description); projectInstance.setStatus(ProjectStatusEnum.ENABLED); projectInstance.setCreateTimeUTC(System.currentTimeMillis()); projectInstance.setOverrideKylinProps(overrideProps); if (realizationEntries != null) projectInstance.setRealizationEntries(realizationEntries); else projectInstance.setRealizationEntries(Lists.<RealizationEntry> newArrayList()); if (models != null) projectInstance.setModels(models); else projectInstance.setModels(new ArrayList<String>()); return projectInstance; }
public String getResourcePath() { return concatResourcePath(resourceName()); }
public ProjectInstance updateProject(ProjectInstance project, String newName, String newDesc) throws IOException { if (!project.getName().equals(newName)) { ProjectInstance newProject = this.createProject(newName, project.getOwner(), newDesc); // FIXME table lost?? newProject.setCreateTimeUTC(project.getCreateTimeUTC()); newProject.recordUpdateTime(System.currentTimeMillis()); newProject.setRealizationEntries(project.getRealizationEntries()); deleteResource(project); saveResource(newProject); return newProject; } else { project.setName(newName); project.setDescription(newDesc); if (project.getUuid() == null) project.updateRandomUuid(); saveResource(project); return project; } }
org.apache.kylin.cube.model.v1.ProjectInstance oldPrj = store.getResource(path, org.apache.kylin.cube.model.v1.ProjectInstance.class, new JsonSerializer<org.apache.kylin.cube.model.v1.ProjectInstance>(org.apache.kylin.cube.model.v1.ProjectInstance.class)); ProjectInstance newPrj = new ProjectInstance(); newPrj.setUuid(oldPrj.getUuid()); newPrj.setName(oldPrj.getName()); newPrj.setOwner(oldPrj.getOwner()); newPrj.setDescription(oldPrj.getDescription()); newPrj.setLastModified(oldPrj.getLastModified()); newPrj.setCreateTimeUTC(RootPersistentEntity.parseTime(oldPrj.getCreateTime())); newPrj.setStatus(oldPrj.getStatus()); List<RealizationEntry> realizationEntries = Lists.newArrayList(); for (String cube : oldPrj.getCubes()) { realizationEntries.add(entry); newPrj.setRealizationEntries(realizationEntries); tables.add(this.appendDBName(table)); newPrj.setTables(tables); store.putResource(newPrj.getResourcePath(), newPrj, ProjectManager.PROJECT_SERIALIZER); updatedResources.add(path); } catch (IOException e) {
String modelName = srcCube.getDescriptor().getModelName(); String projectResPath = ProjectInstance.concatResourcePath(projectName); Serializer<ProjectInstance> projectSerializer = new JsonSerializer<ProjectInstance>(ProjectInstance.class); ProjectInstance project = dstStore.getResource(projectResPath, projectSerializer); project.addModel(modelName); project.removeRealization(RealizationType.CUBE, cubeName); project.addRealizationEntry(RealizationType.CUBE, cubeName); String modelId = (String) opt.params[1]; String projectName = (String) opt.params[2]; String projectResPath = ProjectInstance.concatResourcePath(projectName); Serializer<ProjectInstance> projectSerializer = new JsonSerializer<ProjectInstance>(ProjectInstance.class); ProjectInstance project = dstStore.getResource(projectResPath, projectSerializer); String projUUID = project.getUuid(); Table srcAclHtable = null; Table destAclHtable = null;
String modelName = srcCube.getDescriptor().getModelName(); String projectResPath = ProjectInstance.concatResourcePath(projectName); Serializer<ProjectInstance> projectSerializer = new JsonSerializer<ProjectInstance>(ProjectInstance.class); ProjectInstance project = dstStore.getResource(projectResPath, projectSerializer); project.addTable(tableRef.getTableIdentity()); if (!project.getModels().contains(modelName)) project.addModel(modelName); project.removeRealization(RealizationType.CUBE, cubeName); project.addRealizationEntry(RealizationType.CUBE, cubeName);
private void saveResource(ProjectInstance prj) throws IOException { ResourceStore store = getStore(); store.putResource(prj.getResourcePath(), prj, PROJECT_SERIALIZER); prj = reloadProjectAt(prj.getResourcePath()); projectMap.put(norm(prj.getName()), prj); // triggers update broadcast clearL2Cache(); }
@Override public boolean apply(@Nullable ProjectInstance input) { return input.getName().equals(projectName); } }));
public List<RealizationEntry> getRealizationEntries(final RealizationType type) { if (type == null) return getRealizationEntries(); return ImmutableList.copyOf(Iterables.filter(realizationEntries, new Predicate<RealizationEntry>() { @Override public boolean apply(@Nullable RealizationEntry input) { return input.getType() == type; } })); }
@Test public void testHappyIngest() { String srcPath = Thread.currentThread().getContextClassLoader().getResource("cloned_cube_and_model.zip").getPath(); CubeMetaIngester.main(new String[] { "-project", "default", "-srcPath", srcPath }); ProjectInstance project = ProjectManager.getInstance(KylinConfig.getInstanceFromEnv()).getProject("default"); Assert.assertEquals(1, Collections.frequency(project.getTables(), "DEFAULT.TEST_KYLIN_FACT")); Assert.assertTrue(project.getModels().contains("cloned_model")); Assert.assertTrue(project.getRealizationEntries().contains(RealizationEntry.create(RealizationType.CUBE, "cloned_cube"))); getTestConfig().clearManagers(); CubeInstance instance = CubeManager.getInstance(KylinConfig.getInstanceFromEnv()).getCube("cloned_cube"); Assert.assertTrue(instance != null); }
private void copyAcl(String origCubeId, String newCubeId, String projectName) throws Exception { String projectResPath = ProjectInstance.concatResourcePath(projectName); Serializer<ProjectInstance> projectSerializer = new JsonSerializer<ProjectInstance>(ProjectInstance.class); ProjectInstance project = store.getResource(projectResPath, projectSerializer); String projUUID = project.getUuid(); Table aclHtable = null; try {
List<RealizationEntry> hybridRealizationEntries = projectInstance.getRealizationEntries(RealizationType.HYBRID); cubeNames[i] = cubeRealizationEntries.get(i).getRealization(); hybridService.updateHybridCubeNoCheck(instance.getName(), projectInstance.getName(), cube.getModel().getName(), cubeNames);
@PreAuthorize(Constant.ACCESS_HAS_ROLE_ADMIN + " or hasPermission(#currentProject, 'ADMINISTRATION')") public ProjectInstance updateProject(ProjectInstance newProject, ProjectInstance currentProject) throws IOException { String newProjectName = newProject.getName(); String newDescription = newProject.getDescription(); LinkedHashMap<String, String> overrideProps = newProject.getOverrideKylinProps(); ProjectInstance updatedProject = getProjectManager().updateProject(currentProject, newProjectName, newDescription, overrideProps); logger.debug("Project updated."); return updatedProject; }
for (String tableName : pi.getTables()) { TableDesc tableDesc = metaMgr.getTableDesc(tableName, project); if (tableDesc != null) { for (String extFilterName : pi.getExtFilters()) { ExternalFilterDesc filterDesc = metaMgr.getExtFilterDesc(extFilterName); if (filterDesc != null) { for (RealizationEntry entry : pi.getRealizationEntries()) { IRealization realization = registry.getRealization(entry.getType(), entry.getRealization()); if (realization != null) {
private static void addCubeAndModelIntoProject(CubeInstance srcCube, String cubeName, String projectName) throws IOException { String projectResPath = ProjectInstance.concatResourcePath(projectName); if (!dstStore.exists(projectResPath)) throw new IllegalStateException("The target project " + projectName + "does not exist"); operations.add(new Opt(OptType.ADD_INTO_PROJECT, new Object[] { srcCube, cubeName, projectName })); }
public ProjectInstance getPrjByUuid(String uuid) { try (AutoLock lock = prjMapLock.lockForRead()) { for (ProjectInstance prj : projectMap.values()) { if (uuid.equals(prj.getUuid())) return prj; } return null; } }
public String getProjectOfModel(String modelName) { for (ProjectInstance p : getProjectManager().listAllProjects()) { if (p.containsModel(modelName)) return p.getName(); } return null; }