use of org.wso2.ei.dashboard.core.rest.model.Artifacts in project carbon-apimgt by wso2.
the class APIProviderImpl method deleteAPIRevision.
/**
* Delete an API Revision
*
* @param apiId API UUID
* @param apiRevisionId API Revision UUID
* @param organization identifier of the organization
* @throws APIManagementException if failed to delete APIRevision
*/
@Override
public void deleteAPIRevision(String apiId, String apiRevisionId, String organization) throws APIManagementException {
APIIdentifier apiIdentifier = APIUtil.getAPIIdentifierFromUUID(apiId);
if (apiIdentifier == null) {
throw new APIMgtResourceNotFoundException("Couldn't retrieve existing API with API UUID: " + apiId, ExceptionCodes.from(ExceptionCodes.API_NOT_FOUND, apiId));
}
APIRevision apiRevision = apiMgtDAO.getRevisionByRevisionUUID(apiRevisionId);
if (apiRevision == null) {
throw new APIMgtResourceNotFoundException("Couldn't retrieve existing API Revision with Revision UUID: " + apiRevisionId, ExceptionCodes.from(ExceptionCodes.API_REVISION_NOT_FOUND, apiRevisionId));
}
List<APIRevisionDeployment> apiRevisionDeploymentsResponse = getAPIRevisionDeploymentList(apiRevisionId);
if (apiRevisionDeploymentsResponse.size() != 0) {
String errorMessage = "Couldn't delete API revision since API revision is currently deployed to a gateway" + "." + "You need to undeploy the API Revision from the gateway before attempting deleting API Revision: " + apiRevision.getRevisionUUID();
throw new APIManagementException(errorMessage, ExceptionCodes.from(ExceptionCodes.EXISTING_API_REVISION_DEPLOYMENT_FOUND, apiRevisionId));
}
apiIdentifier.setUuid(apiId);
try {
apiPersistenceInstance.deleteAPIRevision(new Organization(organization), apiIdentifier.getUUID(), apiRevision.getRevisionUUID(), apiRevision.getId());
} catch (APIPersistenceException e) {
String errorMessage = "Failed to delete registry artifacts";
throw new APIManagementException(errorMessage, ExceptionCodes.from(ExceptionCodes.ERROR_DELETING_API_REVISION, apiRevision.getApiUUID()));
}
apiMgtDAO.deleteAPIRevision(apiRevision);
gatewayArtifactsMgtDAO.deleteGatewayArtifact(apiRevision.getApiUUID(), apiRevision.getRevisionUUID());
if (artifactSaver != null) {
try {
artifactSaver.removeArtifact(apiRevision.getApiUUID(), apiIdentifier.getApiName(), apiIdentifier.getVersion(), apiRevision.getRevisionUUID(), organization);
} catch (ArtifactSynchronizerException e) {
log.error("Error while deleting Runtime artifacts from artifact Store", e);
}
}
}
use of org.wso2.ei.dashboard.core.rest.model.Artifacts in project carbon-apimgt by wso2.
the class APIProviderImpl method restoreAPIRevision.
/**
* Restore a provided API Revision as the current API of the API
*
* @param apiId API UUID
* @param apiRevisionId API Revision UUID
* @throws APIManagementException if failed to restore APIRevision
*/
@Override
public void restoreAPIRevision(String apiId, String apiRevisionId, String organization) throws APIManagementException {
APIIdentifier apiIdentifier = APIUtil.getAPIIdentifierFromUUID(apiId);
if (apiIdentifier == null) {
throw new APIMgtResourceNotFoundException("Couldn't retrieve existing API with API UUID: " + apiId, ExceptionCodes.from(ExceptionCodes.API_NOT_FOUND, apiId));
}
APIRevision apiRevision = apiMgtDAO.getRevisionByRevisionUUID(apiRevisionId);
if (apiRevision == null) {
throw new APIMgtResourceNotFoundException("Couldn't retrieve existing API Revision with Revision UUID: " + apiRevisionId, ExceptionCodes.from(ExceptionCodes.API_REVISION_NOT_FOUND, apiRevisionId));
}
apiIdentifier.setUuid(apiId);
try {
apiPersistenceInstance.restoreAPIRevision(new Organization(organization), apiIdentifier.getUUID(), apiRevision.getRevisionUUID(), apiRevision.getId());
} catch (APIPersistenceException e) {
String errorMessage = "Failed to restore registry artifacts";
throw new APIManagementException(errorMessage, ExceptionCodes.from(ExceptionCodes.ERROR_RESTORING_API_REVISION, apiRevision.getApiUUID()));
}
apiMgtDAO.restoreAPIRevision(apiRevision);
}
use of org.wso2.ei.dashboard.core.rest.model.Artifacts in project carbon-apimgt by wso2.
the class APIUtil method notifyAPIStateChangeToAssociatedDocuments.
/**
* Notify document artifacts if an api state change occured. This change is required to re-trigger the document
* indexer so that the documnet indexes will be updated with the new associated api status.
*
* @param apiArtifact
* @param registry
* @throws RegistryException
* @throws APIManagementException
*/
public static void notifyAPIStateChangeToAssociatedDocuments(GenericArtifact apiArtifact, Registry registry) throws RegistryException, APIManagementException {
Association[] docAssociations = registry.getAssociations(apiArtifact.getPath(), APIConstants.DOCUMENTATION_ASSOCIATION);
for (Association association : docAssociations) {
String documentResourcePath = association.getDestinationPath();
Resource docResource = registry.get(documentResourcePath);
String oldStateChangeIndicatorStatus = docResource.getProperty(APIConstants.API_STATE_CHANGE_INDICATOR);
String newStateChangeIndicatorStatus = "false";
if (oldStateChangeIndicatorStatus != null) {
newStateChangeIndicatorStatus = String.valueOf(!Boolean.parseBoolean(oldStateChangeIndicatorStatus));
}
docResource.setProperty(APIConstants.API_STATE_CHANGE_INDICATOR, "false");
registry.put(documentResourcePath, docResource);
}
}
use of org.wso2.ei.dashboard.core.rest.model.Artifacts in project carbon-apimgt by wso2.
the class RuntimeArtifactGeneratorUtil method getRuntimeArtifacts.
private static List<APIRuntimeArtifactDto> getRuntimeArtifacts(String apiId, String gatewayLabel, String tenantDomain) throws APIManagementException {
List<APIRuntimeArtifactDto> gatewayArtifacts;
if (StringUtils.isNotEmpty(gatewayLabel)) {
byte[] decodedValue = Base64.decodeBase64(gatewayLabel.getBytes());
String[] gatewayLabels = new String(decodedValue).split("\\|");
if (StringUtils.isNotEmpty(apiId)) {
gatewayArtifacts = gatewayArtifactsMgtDAO.retrieveGatewayArtifactsByAPIIDAndLabel(apiId, gatewayLabels, tenantDomain);
} else {
gatewayArtifacts = gatewayArtifactsMgtDAO.retrieveGatewayArtifactsByLabel(gatewayLabels, tenantDomain);
}
} else {
gatewayArtifacts = gatewayArtifactsMgtDAO.retrieveGatewayArtifacts(tenantDomain);
}
if (gatewayArtifacts != null) {
if (gatewayArtifacts.isEmpty()) {
throw new APIManagementException("No API Artifacts", ExceptionCodes.NO_API_ARTIFACT_FOUND);
}
for (APIRuntimeArtifactDto apiRuntimeArtifactDto : gatewayArtifacts) {
String organizationId = gatewayArtifactsMgtDAO.retrieveOrganization(apiRuntimeArtifactDto.getApiId());
if (organizationId != null) {
apiRuntimeArtifactDto.setOrganization(organizationId);
}
}
}
if (gatewayArtifacts == null || gatewayArtifacts.isEmpty()) {
return null;
}
return gatewayArtifacts;
}
use of org.wso2.ei.dashboard.core.rest.model.Artifacts in project carbon-apimgt by wso2.
the class GatewayJMSMessageListener method handleNotificationMessage.
private void handleNotificationMessage(String eventType, long timestamp, String encodedEvent) {
byte[] eventDecoded = Base64.decodeBase64(encodedEvent);
String eventJson = new String(eventDecoded);
if (APIConstants.EventType.DEPLOY_API_IN_GATEWAY.name().equals(eventType) || APIConstants.EventType.REMOVE_API_FROM_GATEWAY.name().equals(eventType)) {
DeployAPIInGatewayEvent gatewayEvent = new Gson().fromJson(new String(eventDecoded), DeployAPIInGatewayEvent.class);
String tenantDomain = gatewayEvent.getTenantDomain();
boolean tenantLoaded = ServiceReferenceHolder.getInstance().isTenantLoaded(tenantDomain);
if (!tenantLoaded) {
String syncKey = tenantDomain.concat("__").concat(this.getClass().getName());
synchronized (syncKey.intern()) {
tenantLoaded = ServiceReferenceHolder.getInstance().isTenantLoaded(tenantDomain);
if (!tenantLoaded) {
APIUtil.loadTenantConfigBlockingMode(tenantDomain);
}
}
}
if (tenantLoaded) {
Set<String> systemConfiguredGatewayLabels = new HashSet(gatewayEvent.getGatewayLabels());
systemConfiguredGatewayLabels.retainAll(gatewayArtifactSynchronizerProperties.getGatewayLabels());
if (!systemConfiguredGatewayLabels.isEmpty()) {
ServiceReferenceHolder.getInstance().getKeyManagerDataService().updateDeployedAPIRevision(gatewayEvent);
if (EventType.DEPLOY_API_IN_GATEWAY.name().equals(eventType)) {
boolean tenantFlowStarted = false;
try {
startTenantFlow(tenantDomain);
tenantFlowStarted = true;
inMemoryApiDeployer.deployAPI(gatewayEvent);
} catch (ArtifactSynchronizerException e) {
log.error("Error in deploying artifacts for " + gatewayEvent.getUuid() + "in the Gateway");
} finally {
if (tenantFlowStarted) {
endTenantFlow();
}
}
}
if (APIConstants.EventType.REMOVE_API_FROM_GATEWAY.name().equals(eventType)) {
boolean tenantFlowStarted = false;
try {
startTenantFlow(tenantDomain);
tenantFlowStarted = true;
inMemoryApiDeployer.unDeployAPI(gatewayEvent);
} catch (ArtifactSynchronizerException e) {
log.error("Error in undeploying artifacts");
} finally {
if (tenantFlowStarted) {
endTenantFlow();
}
}
}
}
if (debugEnabled) {
log.debug("Event with ID " + gatewayEvent.getEventId() + " is received and " + gatewayEvent.getUuid() + " is successfully deployed/undeployed");
}
}
}
if (EventType.APPLICATION_CREATE.toString().equals(eventType) || EventType.APPLICATION_UPDATE.toString().equals(eventType)) {
ApplicationEvent event = new Gson().fromJson(eventJson, ApplicationEvent.class);
ServiceReferenceHolder.getInstance().getKeyManagerDataService().addOrUpdateApplication(event);
;
} else if (EventType.SUBSCRIPTIONS_CREATE.toString().equals(eventType) || EventType.SUBSCRIPTIONS_UPDATE.toString().equals(eventType)) {
SubscriptionEvent event = new Gson().fromJson(eventJson, SubscriptionEvent.class);
ServiceReferenceHolder.getInstance().getKeyManagerDataService().addOrUpdateSubscription(event);
} else if (EventType.API_UPDATE.toString().equals(eventType)) {
APIEvent event = new Gson().fromJson(eventJson, APIEvent.class);
ServiceReferenceHolder.getInstance().getKeyManagerDataService().addOrUpdateAPI(event);
} else if (EventType.API_LIFECYCLE_CHANGE.toString().equals(eventType)) {
APIEvent event = new Gson().fromJson(eventJson, APIEvent.class);
if (APIStatus.CREATED.toString().equals(event.getApiStatus()) || APIStatus.RETIRED.toString().equals(event.getApiStatus())) {
ServiceReferenceHolder.getInstance().getKeyManagerDataService().removeAPI(event);
} else {
ServiceReferenceHolder.getInstance().getKeyManagerDataService().addOrUpdateAPI(event);
}
} else if (EventType.APPLICATION_REGISTRATION_CREATE.toString().equals(eventType)) {
ApplicationRegistrationEvent event = new Gson().fromJson(eventJson, ApplicationRegistrationEvent.class);
ServiceReferenceHolder.getInstance().getKeyManagerDataService().addOrUpdateApplicationKeyMapping(event);
} else if (EventType.SUBSCRIPTIONS_DELETE.toString().equals(eventType)) {
SubscriptionEvent event = new Gson().fromJson(eventJson, SubscriptionEvent.class);
ServiceReferenceHolder.getInstance().getKeyManagerDataService().removeSubscription(event);
} else if (EventType.APPLICATION_DELETE.toString().equals(eventType)) {
ApplicationEvent event = new Gson().fromJson(eventJson, ApplicationEvent.class);
ServiceReferenceHolder.getInstance().getKeyManagerDataService().removeApplication(event);
} else if (EventType.REMOVE_APPLICATION_KEYMAPPING.toString().equals(eventType)) {
ApplicationRegistrationEvent event = new Gson().fromJson(eventJson, ApplicationRegistrationEvent.class);
ServiceReferenceHolder.getInstance().getKeyManagerDataService().removeApplicationKeyMapping(event);
} else if (EventType.SCOPE_CREATE.toString().equals(eventType)) {
ScopeEvent event = new Gson().fromJson(eventJson, ScopeEvent.class);
ServiceReferenceHolder.getInstance().getKeyManagerDataService().addScope(event);
} else if (EventType.SCOPE_UPDATE.toString().equals(eventType)) {
ScopeEvent event = new Gson().fromJson(eventJson, ScopeEvent.class);
ServiceReferenceHolder.getInstance().getKeyManagerDataService().addScope(event);
} else if (EventType.SCOPE_DELETE.toString().equals(eventType)) {
ScopeEvent event = new Gson().fromJson(eventJson, ScopeEvent.class);
ServiceReferenceHolder.getInstance().getKeyManagerDataService().deleteScope(event);
} else if (EventType.POLICY_CREATE.toString().equals(eventType) || EventType.POLICY_DELETE.toString().equals(eventType)) {
PolicyEvent event = new Gson().fromJson(eventJson, PolicyEvent.class);
boolean updatePolicy = false;
boolean deletePolicy = false;
if (EventType.POLICY_CREATE.toString().equals(eventType) || EventType.POLICY_UPDATE.toString().equals(eventType)) {
updatePolicy = true;
} else if (EventType.POLICY_DELETE.toString().equals(eventType)) {
deletePolicy = true;
}
if (event.getPolicyType() == PolicyType.API) {
APIPolicyEvent policyEvent = new Gson().fromJson(eventJson, APIPolicyEvent.class);
if (updatePolicy) {
ServiceReferenceHolder.getInstance().getKeyManagerDataService().addOrUpdateAPIPolicy(policyEvent);
} else if (deletePolicy) {
ServiceReferenceHolder.getInstance().getKeyManagerDataService().removeAPIPolicy(policyEvent);
}
} else if (event.getPolicyType() == PolicyType.SUBSCRIPTION) {
SubscriptionPolicyEvent policyEvent = new Gson().fromJson(eventJson, SubscriptionPolicyEvent.class);
if (updatePolicy) {
ServiceReferenceHolder.getInstance().getKeyManagerDataService().addOrUpdateSubscriptionPolicy(policyEvent);
} else if (deletePolicy) {
ServiceReferenceHolder.getInstance().getKeyManagerDataService().removeSubscriptionPolicy(policyEvent);
}
} else if (event.getPolicyType() == PolicyType.APPLICATION) {
ApplicationPolicyEvent policyEvent = new Gson().fromJson(eventJson, ApplicationPolicyEvent.class);
if (updatePolicy) {
ServiceReferenceHolder.getInstance().getKeyManagerDataService().addOrUpdateApplicationPolicy(policyEvent);
} else if (deletePolicy) {
ServiceReferenceHolder.getInstance().getKeyManagerDataService().removeApplicationPolicy(policyEvent);
}
}
} else if (EventType.ENDPOINT_CERTIFICATE_ADD.toString().equals(eventType) || EventType.ENDPOINT_CERTIFICATE_REMOVE.toString().equals(eventType)) {
CertificateEvent certificateEvent = new Gson().fromJson(eventJson, CertificateEvent.class);
if (EventType.ENDPOINT_CERTIFICATE_ADD.toString().equals(eventType)) {
try {
new EndpointCertificateDeployer(certificateEvent.getTenantDomain()).deployCertificate(certificateEvent.getAlias());
} catch (APIManagementException e) {
log.error(e);
}
} else if (EventType.ENDPOINT_CERTIFICATE_REMOVE.toString().equals(eventType)) {
boolean tenantFlowStarted = false;
try {
PrivilegedCarbonContext.startTenantFlow();
PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(certificateEvent.getTenantDomain(), true);
tenantFlowStarted = true;
CertificateManagerImpl.getInstance().deleteCertificateFromGateway(certificateEvent.getAlias());
} finally {
if (tenantFlowStarted) {
PrivilegedCarbonContext.endTenantFlow();
}
}
}
} else if (EventType.GA_CONFIG_UPDATE.toString().equals(eventType)) {
GoogleAnalyticsConfigEvent googleAnalyticsConfigEvent = new Gson().fromJson(eventJson, GoogleAnalyticsConfigEvent.class);
try {
new GoogleAnalyticsConfigDeployer(googleAnalyticsConfigEvent.getTenantDomain()).deploy();
} catch (APIManagementException e) {
log.error(e);
}
} else if (EventType.UDATE_API_LOG_LEVEL.toString().equals(eventType)) {
APIEvent apiEvent = new Gson().fromJson(eventJson, APIEvent.class);
APILoggerManager.getInstance().updateLoggerMap(apiEvent.getApiContext(), apiEvent.getLogLevel());
}
}
Aggregations