# Eclipse IDE
#------------------------------------------------------------
**/.classpath
**/.project
**/.tern-project
**/.settings/**
**/bin/

# IntelliJ IDE
#------------------------------------------------------------
**/.idea/
/out/
*.iml
*.ipr
*.iws

# Logs
#------------------------------------------------------------
*.log
**/logs/*
/log

# Excluded Script Folder
#------------------------------------------------------------
xFolder

# Maven
#------------------------------------------------------------
**/target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
version.properties
*dependency-reduced-pom.xml
ajcore*.txt

# sdc-os-chef
#------------------------------------------------------------
*.class

# Package Files
#------------------------------------------------------------
*.ear
*.jar
*.war

#Gradle
#------------------------------------------------------------
.gradle/*
*/*.gradle
*/settings.gradle
*/gradlew.bat
*/gradlew
gradlew.bat
gradlew
settings.gradle

# asdctool
#------------------------------------------------------------
asdctool/*.csv
asdctool/report_delete_1538046694389.json
asdctool/report_test_1538046722484.json
asdctool/sdc-cassandra-init/chef-repo/cookbooks/cassandra-actions/attributes/default.rb
asdctool/sdc-cassandra-init/chef-repo/cookbooks/cassandra-actions/files/default/*
asdctool/test-output/*
asdctool/tosca/*

# catalog-be
#------------------------------------------------------------
catalog-be/data/*
catalog-be/.pydevproject
catalog-be/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/files/default/ecomp-error-configuration.yaml
catalog-be/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/files/default/error-configuration.yaml
catalog-be/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/files/default/logback.xml
catalog-be/sdc-backend/context.xml
catalog-be/src/main/java/META-INF/MANIFEST.MF
catalog-be/test-output/*

# catalog-fe
#------------------------------------------------------------
catalog-fe/src/main/webapp/*

# catalog-ui
#------------------------------------------------------------
catalog-ui/app/dist/*
catalog-ui/app/robots.txt
catalog-ui/app/scripts/**/*.js
catalog-ui/app/scripts/**/*.js.map
catalog-ui/app/scripts/references.ts
catalog-ui/app/scripts/tsconfig.json
catalog-ui/app/tsconfig.json
catalog-ui/Chrome*
catalog-ui/dist
catalog-ui/.editorconfig
catalog-ui/.jshintrc
catalog-ui/node/*
catalog-ui/node_modules/
catalog-ui/npm-debug.log
catalog-ui/package-lock.json
catalog-ui/PhantomJS_1.9.8_(Windows_7_0.0.0)/*
catalog-ui/tests/Coverage/*
catalog-ui/*.tmp.txt
catalog-ui/.yo-rc.json

*.checkstyle
*.css
*.css.map

# data
#------------------------------------------------------------
data/compute.png
data/loadbalancer.png
data/mysql.png
data/network.png
data/normative-types-blockStorage.yml
data/normative-types-compute.yml
data/normative-types-database.yml
data/normative-types-DBMS.yml
data/normative-types-network.yml
data/normative-types-objectStorage.yml
data/normative-types-root.yml
data/normative-types-softwareComponent.yml
data/normative-types-webApplication.yml
data/normative-types-webServer.yml
data/objectstore.png
data/relational_db.png
data/root.png
data/router.png
data/software.png
data/volume.png

# dox-sequence-diagram-ui
#------------------------------------------------------------
dox-sequence-diagram-ui/node/*

**/.factorypath

*.kpf

.metadata/

node/*
*normatives.tar.gz

# openecomp-be
#------------------------------------------------------------
openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/vsp_*
openecomp-be/dist/sdc-onboard-db-init-docker/artifacts/alter_tables.cql
openecomp-be/dist/sdc-onboard-db-init-docker/artifacts/init_keyspaces.cql
openecomp-be/dist/sdc-onboard-db-init-docker/artifacts/init_schemas.cql
openecomp-be/tools/swagger-ui/api-docs/api.html
openecomp-be/tools/swagger-ui/api-docs/api.json

# openecomp-ui
#------------------------------------------------------------
openecomp-ui/node/*
openecomp-ui/yarn.lock

*.orig

.project
/sdc-cassandra/chef-repo/cookbooks/cassandra-actions/files/default/tools/build/scripts/*

# sdc-os-chef
#------------------------------------------------------------
sdc-os-chef/.idea/*

# test-apis-ci
#------------------------------------------------------------
test-apis-ci/extent.html
test-apis-ci/ExtentReport/*
test-apis-ci/ExtentReport/ASDC_CI_Extent_Report.html
test-apis-ci/logfile.log*
test-apis-ci/sdc-api-tests/chef-repo/cookbooks/sdc-api-tests/files/default/testSuites/*
test-apis-ci/test-output/*

# ui-ci
#------------------------------------------------------------
ui-ci/ExtentReport/*
ui-ci/logfile.log*
ui-ci/src/main/resources/Files/output/*
ui-ci/src/main/resources/Files/outputMainServiceTemplate/*
ui-ci/.tern-project
ui-ci/test-output/*

#------------------------------------------------------------
utils/webseal-simulator/sdc-simulator/chef-repo/cookbooks/sdc-simulator/files/default/logback.xml
vagrant-asdc-all-in-one/
Vagrantfile

*.xls
