/*
 * Copyright 2017 Huawei Technologies Co., Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/*
Usage: dot -T png -O onapapidependencies.dot   This cmd will generate a png graph dependency file.
Graphiz is the open source tool used to generate the graph.
Graphiz is available and documented at http://www.graphviz.org
This text file represents the API dependencies between ONAP projects
The relation between producer and consumer is formalized by the following convention:
consumer -> producer; 
*/
 
digraph {
newrank=true;
fontsize = 20;
label="ONAP Projects API Dependencies";
rankdir=TB;
ranksep="1 equally"; 
edge [color=Blue]

aai				[shape=box,label="Active and Available Inventory"]
aaf				[shape=box,label="Application Authorization Framework"]
appc			[shape=box,label="APP-C"]
ccsdk			[shape=box,label="CCSDK"]
clamp			[shape=box,label="CLAMP"]
cli			    [shape=box,label="CLI"]
clamp			[shape=box,label="CLAMP"]
dcaegen2		[shape=box,label="DCAE"]
dmaap			[shape=box,label="Data Movement as Platform"]
extapi			[shape=box,label="External API Framewok"]
holmes			[shape=box,label="Holmes"]
modeling		[shape=box,label="Modeling"]
msb				[shape=box,label="Microservices Bus"]
multicloud		[shape=box,label="Multi VIM/Cloud"]
oom			    [shape=box,label="ONAP Operation Manager"]
policy			[shape=box,label="Policy Framework"]
portal			[shape=box,label="Portal Platform"]
sdc				[shape=box,label="Service Design & Creation"]
sdnc			[shape=box,label="SDNC"]
so				[shape=box,label="Service Orchestrator"]
vfc         	[shape=box,label="VF-C"]
vid  			[shape=box,label="VID"]
usecaseui		[shape=box,label="Use Case UI"]


aai -> dmaap;			//https://wiki.onap.org/pages/viewpage.action?pageId=8227565#A&AIM1ReleasePlanning-APIIncomingDependencies
aai -> msb;
appc -> aai;			//https://wiki.onap.org/pages/viewpage.action?pageId=6593279#APPCM1ReleasePlanning(AmsterdamRelease)-APIIncomingDependencies
appc -> multicloud;
appc -> sdc;
appc -> ccsdk;
appc -> dmaap;
ccsdk -> aai;			//https://wiki.onap.org/display/DW/Release+Planning+Template+%3A+CCSDK+Amsterdam+Release#ReleasePlanningTemplate:CCSDKAmsterdamRelease-APIIncomingDependencies
ccsdk -> sdc;
clamp -> dcaegen2;		//https://wiki.onap.org/display/DW/CLAMP+Release+Planning+M1#CLAMPReleasePlanningM1-APIIncomingDependencies
clamp -> policy;
clamp -> sdc;
cli -> aaf;				//https://wiki.onap.org/display/DW/CLI+Release+Planning#CLIReleasePlanning-APIIncomingDependencies
cli -> aai;
cli -> msb;
dcaegen2 -> dmaap;		//https://wiki.onap.org/display/DW/DCAE+R1+Release+Planning#DCAER1ReleasePlanning-APIIncomingDependencies
dcaegen2 -> multicloud;
dcaegen2 -> policy;
dcaegen2 -> sdc;
dmaap -> aaf;			//https://wiki.onap.org/display/DW/DMaaP+Amsterdam+M1+Release#DMaaPAmsterdamM1Release-APIIncomingDependencies			
extapi -> so;			//https://wiki.onap.org/pages/viewpage.action?pageId=8227006#ExternalAPIFrameworkM1ReleasePlanning(AmsterdamRelease)-APIIncomingDependencies		
extapi -> sdc;
holmes -> aai;			//https://wiki.onap.org/pages/viewpage.action?pageId=6593583#HolmesReleasePlanningforAmsterdam-APIIncomingDependencies		
holmes -> dcaegen2;
holmes -> dmaap;
holmes -> msb;
multicloud -> aai;		//https://wiki.onap.org/pages/viewpage.action?pageId=8225753#MultiVIM/CloudRelease1Planning-APIIncomingDependencies
multicloud -> dcaegen2;
oom -> msb;				//https://wiki.onap.org/display/DW/OOM+M1+Release+Planning+Template#OOMM1ReleasePlanningTemplate-APIIncomingDependencies
policy -> aai;			//https://wiki.onap.org/display/DW/Policy+Framework+R1+-+M1+Release+Planning+Template#PolicyFrameworkR1-M1ReleasePlanningTemplate-APIIncomingDependencies
policy -> appc;
policy -> dcaegen2;
policy -> dmaap;
policy -> vfc;
policy -> so;
portal -> aaf;			//https://wiki.onap.org/pages/viewpage.action?pageId=8227559#PortalPlatformM1ReleasePlanning(AmsterdamRelease)-APIIncomingDependencies
sdnc -> aai;			//https://wiki.onap.org/display/DW/Release+Planning+Template+%3A+SDNC+Amsterdam+Release#ReleasePlanningTemplate:SDNCAmsterdamRelease-APIIncomingDependencies
sdnc -> sdc;
sdnc -> dmaap;
so -> aai;				//https://wiki.onap.org/display/DW/Service+Orchestrator+Release+Planning#ServiceOrchestratorReleasePlanning-APIIncomingDependencies
so -> appc;
so -> multicloud;
so -> sdc;
so -> sdnc;
so -> vfc;
usecaseui -> dcaegen2;	//https://wiki.onap.org/display/DW/Usecase+UI+Release+Planning#UsecaseUIReleasePlanning-APIIncomingDependencies
usecaseui -> msb;
usecaseui -> portal;
usecaseui -> so;
usecaseui -> vfc;
vid -> aai;				//https://wiki.onap.org/display/DW/VID+R1+Amsterdam+Release+Planning#VIDR1AmsterdamReleasePlanning-APIIncomingDependencies
vid -> portal;
vid -> sdc;
vid -> so;
vfc -> aai;				//https://wiki.onap.org/display/DW/VF-C+Release+Planning#VF-CReleasePlanning-APIIncomingDependencies
vfc -> dcaegen2;
vfc -> modeling;
vfc -> multicloud;
vfc -> msb;
vfc -> sdc;
}