summaryrefslogtreecommitdiffstats
path: root/policy-management/src/main
AgeCommit message (Collapse)AuthorFilesLines
2020-01-29Parameterize mvn repo urls and proxy settingsRashmi Pujar1-6/+47
This allows the users to build the docker images for drools-pdp and drools-application using their own CI pipelines if needed. Issue-ID: POLICY-2330 Signed-off-by: Rashmi Pujar <rashmi.pujar@bell.ca> Change-Id: I9ea0161b45d504be4e65a21c95e48dee4a78de3a
2020-01-13policy/drools-pdp jdk11 upgradesHockla, Ali (ah999m)1-2/+3
Issue-ID: POLICY-1589 Change-Id: I0ed05c6e471a7da6658e02a4ba3115d3a117cedd Signed-off-by: Hockla, Ali (ah999m) <ah999m@att.com>
2020-01-08Enabling logback file to be loaded using oom configmapa.sreekumar1-2/+2
Change-Id: I4828559ff62ffc3ee41f89448a6f7e9914a2a0ba Issue-ID: POLICY-2308 Signed-off-by: a.sreekumar <ajith.sreekumar@est.tech>
2019-12-09base changes to support offline pdpdjhh3-105/+384
Issue-ID: POLICY-2191 Signed-off-by: jhh <jorge.hernandez-herrero@att.com> Change-Id: I6f8029c1c771905357971331988a9b8408a93f10 Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
2019-11-14Invoke lock callback in session threadJim Hahn3-29/+33
Injects the callback as a DroolsRunnable into the session, if there is one. Otherwise, it invokes it via the engine's thread pool. Issue-ID: POLICY-2246 Signed-off-by: Jim Hahn <jrh3@att.com> Change-Id: I214480ae675d89e7335dde4eb4abe2684f7ef8ab Signed-off-by: Jim Hahn <jrh3@att.com>
2019-11-08Miscellaneous code clean upjhh7-40/+40
Issue-ID: POLICY-2203 Signed-off-by: jhh <jorge.hernandez-herrero@att.com> Change-Id: I5731d4636bd2aaecbc486406298bcba1b19e8f4d Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
2019-11-06Fix new sonar issues in RestManagerJim Hahn1-31/+31
Eliminated duplicate code issues. Unfortunately, introduced new sonar issues with lambda expressions. Issue-ID: POLICY-2203 Signed-off-by: Jim Hahn <jrh3@att.com> Change-Id: Ib5853fab6135d2177da449ef6261a352ee4f203e
2019-11-06Merge "Fix duplicate code in drools-pdp RestManager"Liam Fallon1-342/+222
2019-11-06Address drools-pdp sonar issuesJim Hahn3-73/+57
Addressed more sonar issues in drools-pdp: - unwrap multiple instances of the same annotation (NamedQuery) - use lambda instead of anonymous class - duplicate code; addressed by using annotation instead of toString. This still leaves other duplicate code. Issue-ID: POLICY-2203 Change-Id: I8c6ff6562820af638044f134eb8a6725a5f05e8e Signed-off-by: Jim Hahn <jrh3@att.com>
2019-11-06Fix duplicate code in drools-pdp RestManagerJim Hahn1-342/+222
Change-Id: I22821a5027d01f0965c54b60389d3988ac53ed5c Issue-ID: POLICY-2203 Signed-off-by: Jim Hahn <jrh3@att.com>
2019-11-01Merge "Refactor duplicate code from lock managers"Jorge Hernandez3-168/+449
2019-10-31Refactor duplicate code from lock managersJim Hahn3-168/+449
Change-Id: I8910a1a4267d824f064b52c6ad08945590bd9617 Issue-ID: POLICY-2203 Signed-off-by: Jim Hahn <jrh3@att.com>
2019-10-31upgrade to 7.28.0.Final drools librariesjhh1-1/+1
commons-lang does not seem to be packaged anymore (commons-lang3 still does, which is the desired one). There are some @SupressWarning that seem to have no effect that were removed. Some libraries that were explicitly added are transitively used now in the latest version of drools, hence some rework in the dependency and exclude sections. We will need to generate a clm report to verify. Issue-ID: POLICY-1407 Signed-off-by: jhh <jorge.hernandez-herrero@att.com> Change-Id: I44e09183caca72f5f33bdec0b8fa88b0b4793055 Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
2019-10-30Fix more sonar issues in drools-pdpJim Hahn2-5/+5
Sonar issue fixed: - log or rethrow exception - empty code block; moved the comment inside the empty "synchronized" block Change-Id: I55ca87a321b3a1e4079dae6d5a4d44b651cb3086 Issue-ID: POLICY-2203 Signed-off-by: Jim Hahn <jrh3@att.com>
2019-10-24Allow encrypted property valuesjhh3-16/+30
Issue-ID: POLICY-1945 Signed-off-by: jhh <jorge.hernandez-herrero@att.com> Change-Id: I0317a6de838d99b579638252859e42fc49cedfa8 Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
2019-10-17Reimplement Lock API using Lock objectsJim Hahn6-3/+704
Modified PolicyResourceLockManager to just return a feature, deferring the lock() call/method to the feature, itself. The manager was also modified so that, if it can't find an enabled provider, it will return a default provider, whose lock() methods always fail. Once a feature has been identified, the manager will cache it for use thereafter. Modified the feature API to return lock objects and simplified the interface to remove the beforeXxx and afterXxx methods. Moved the unlock and refresh methods from the feature API into the lock class, renaming them to free and extend, respectively. Added a separate, feature-simple-locking project, which implements a simple version of the locking feature, over a single JVM. Extensively revised the distributed locking feature to fit in with the new API. Added support for persistence so that the various LockImpl classes can be serialized and still function correctly when they are deserialized back into new feature instances Added default implementations of free & extend to LockImpl. Modified API to take the ownerKey string, instead of the owner object. Removed Extractor as unneeded - may add via another review, if still useful. Updates per review comments: - Updated licenses in feature-simple-locking - Added beforeCreateLock & afterCreateLock to feature API - Moved SimpleLockingFeature into policy-management so that it's always available - Moved the executor service, "exsvc", into PolicyEngine - Moved Extrator into policy-utils - Changed Extractor logging level for exceptions - Fixed feature sequence numbers - Fixed mixing of seconds and milliseconds - Renamed exsvc - Modified to use property method with default value - Configured scheduled executor - Added suffix to Extractor.register() - Eliminated Feature Api and tied lock manager into engine - Added non-null checks to LockImpl parameters - Added non-null checks to createLock() parameters - Checked that lockManager is initialized Change-Id: Iddba38157ddc5f7277656979c0e679e5489eb7b1 Issue-ID: POLICY-2113 Signed-off-by: Jim Hahn <jrh3@att.com>
2019-09-16Add YAML support to drools-pdp rest servletsJim Hahn2-4/+6
Drools-pdp depends on some of the GsonJackson annotations that cannot be easily worked around via standard gson. Consequently, this continues to use the JacksonHandler for json-encoding, thus it uses the YamlJacksonHandler for yaml-encoding. Added YAML to swagger "consumes" list. Change-Id: Ic70c68bb274222db571b3515cbf1ab22d9ff2366 Issue-ID: POLICY-2081 Signed-off-by: Jim Hahn <jrh3@att.com>
2019-09-04Split Engine start method into "start" and "open"jhh4-53/+111
"open" meaning to open external configuration interfaces to external provisioning systems. Issue-ID: POLICY-2055 Signed-off-by: jhh <jorge.hernandez-herrero@att.com> Change-Id: Ic984f0ebccd088503b6b13620c3b80ed8e640899 Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
2019-08-29Remove AlertSeverity from logback in drools-pdpJim Hahn1-3/+3
Merged severity and AlertSeverity in the MDC, and updated the logback xml files accordingly. The logback patterns for the metrics log had a place for both Severity and AlertSeverity; the latter was replaced with an empty place-holder so-as to maintain the same position for the other fields. Change-Id: Ic0977e1133cc4219394f2d71ca8ebae080620e0b Issue-ID: POLICY-1989 Signed-off-by: Jim Hahn <jrh3@att.com>
2019-08-15Fix more sonar issues in drools-pdpJim Hahn6-776/+596
Addressed issues of cyclomatic complexity and deep nesting by refactoring code into separate methods. In some cases, had to refactor the code into nested classes to avoid passing too many parameters to the newly extracted methods. Addressed issue "too many conditionals" by breaking conditionals apart. Addressed issue "Remove usage of generic wildcard type" by eliminating "? extends" from return values. Addressed issue "Remove this use of 'Thread.sleep()'" in junit tests by introducing latches or using Awaitility. Note: this won't build until ApiUtils has been merged. Change-Id: I0d5596b4cb918a36bc22f426f426bd238195b458 Issue-ID: POLICY-1968 Signed-off-by: Jim Hahn <jrh3@att.com>
2019-08-13Fix sonar issues in drools-pdpJim Hahn28-429/+750
Address sonar issue, "Move constants to a class or enum", by moving them from interfaces to classes: ActiveStandbyFeatureApi StateManagementFeatureApi PolicyResourceLockFeatureApi PolicySessionFeatureApi DroolsController DroolsControllerFeatureApi PolicyControllerFeatureApi PolicyEngineFeatureApi HealthCheck SystemPersistence EventProtocolCoder PolicyController PolicyEngine TestTransaction MdcTransaction Address sonar issue, "Move constants to a class or enum", by change the interface to a class: DroolsProperties Address sonar issue, "Override the "equals" method in this class", by adding equals & hashCode to: DroolsPdpEntity DroolsPdpImpl Use lombok for a number of getters & setters. Address sonar issue, "Define a constant instead of duplicating this literal" in: DroolsPdpsElectionHandler JpaDroolsPdpsConnector MavenDroolsController GenericEventProtocolCoder GsonProtocolCoderToolset RestManager Address sonar issue, "Remove the parentheses around the parameter" in: MavenDroolsController Address sonar issue, "Replace this lambda with a method reference" in: LifecycleFsm Address sonar issue, "Move this constructor to comply with Java Code Conventions" in: LifecycleStateRunning Address sonar issue, "Replace this 'switch' statement by 'if' statements to increase readability", as specified in: PolicyEngineManager Address sonar issue, "Rename field to prevent any misunderstanding/clash with field" in: MdcTransactionImpl Address sonar issue, "Either log or rethrow this exception", in: RestManager Address sonar issue, "Rename this constant name to" uppercase, by replacing enums with static lists in: RestManager Addressed review comments: Fixed license dates. Renamed getSiteName/setSiteName methods to getSite/setSite in the interface to match the field names in the implementation classes. Renamed *Instance classes to *Constants. Next round of review comments. Change-Id: I1c26af9f194833dd773f2b25dc5f60cde163201c Issue-ID: POLICY-1968 Signed-off-by: Jim Hahn <jrh3@att.com>
2019-07-31Expand AAF_NS in properties to onap.org.osaaf.aafjhh1-4/+4
Change-Id: I2e8f887093f9ba3e1fd9c5038dd4ad41d2a5c4c7 Issue-ID: POLICY-1959 Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
2019-07-25Add coverage to MavenDroolsControllerJim Hahn1-41/+52
Change-Id: I7234c0146ef77f685a9766bb03168e385090fd1b Issue-ID: POLICY-1772 Signed-off-by: Jim Hahn <jrh3@att.com>
2019-07-24Add coverage to feature-active-standby-managementJim Hahn1-31/+11
Also removed some logger.isXxx() tests, which should reduce the number of branches that need to be tested. Removed unneeded objects and methods from feature-lifecyle. Change-Id: Ic3eb9c0b63a2ad5585846525eb0ebda81fc55d5e Issue-ID: POLICY-1772 Signed-off-by: Jim Hahn <jrh3@att.com>
2019-07-16Fix checkstyle issues in policy-utilsJim Hahn2-7/+7
Also deleted the checkstyle suppression file. Change-Id: I51c69bce644204435fa8131c14132e0384b4e886 Issue-ID: POLICY-1909 Signed-off-by: Jim Hahn <jrh3@att.com>
2019-07-11Fix checkstyle issues in policy-managementJim Hahn20-3249/+3447
Also deleted the checkstyle suppression file. Moved classes into their own source files per checkstyle. Change-Id: I586223aac0e5b7623cfd7b0acfceca4742ecc013 Issue-ID: POLICY-1908-mgmt-style Signed-off-by: Jim Hahn <jrh3@att.com>
2019-07-08Fix drools-pdp due to sonar changes in commonJim Hahn4-42/+46
Fixed breakages due to changes made in policy/common to satisfy sonar. Change-Id: I26a38340707b2903e089350c31c5dfdb5c019ee0 Issue-ID: POLICY-1791 Signed-off-by: Jim Hahn <jrh3@att.com>
2019-06-17Change getCanonicalName() to getName() in drools-pdpJim Hahn4-14/+14
Per javadocs, getName() should generally be used instead of Class.getCanonicalName(). This change only applies to classes; it does not apply to File objects. Change-Id: I28df56b3dfd0382239960d7f0f6e1131d702b2ab Issue-ID: POLICY-1646 Signed-off-by: Jim Hahn <jrh3@att.com>
2019-05-08Track policies when active.jhh4-3/+51
Do not honor group/subgroup changes with status messages. When no present group/subgroups in update messages, assume that they have to be reset. Keep the policy cache of non-installed policies tracking them when in passive state besides active. Wait until go active to enable them. Remove legacy PAP and PDP-X healtchecks as it was basically testing reachability. There are conflicts with maintaining 2 different sets of PAPs and PDPs, trying to avoid it. Alternative healtchecks are being placed on the robot test framework. What to healtcheck should be considered more carefully in the near future. Change-Id: I574f30bb5899faf521123c79046793d16b4a46e0 Issue-ID: POLICY-1748 Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
2019-05-01relax check in features for multiversion depsjhh1-3/+4
print a warning instead, and the base install one wins. Change-Id: I666481e270bc03a8a7164e0fa947822d1ac8bbb6 Issue-ID: POLICY-1726 Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
2019-04-30Enable noop source support in controllerjhh2-128/+181
Additional telemetry apis for testing. Change-Id: I60a61ffbbe86bbb0474777905de922434deabbe2 Issue-ID: POLICY-1716 Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
2019-04-24Add telemetry API interface for Lifecyclejhh1-197/+77
Some cleanup consolidating code in cire telemetry apis. Issue-ID: POLICY-1687 Signed-off-by: jhh <jorge.hernandez-herrero@att.com> Change-Id: Ic5241d45eba06796192cca1e82cba5ae53dc5aaf Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
2019-04-09deploy and undeploy as audits.jhh3-1/+71
Change-Id: Iea1766d5d8075394e1dccc109f4477bd2c270c36 Issue-ID: POLICY-1624 Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
2019-04-08Initial support for deployjhh6-101/+221
This is a first pass, some functionality is missing (undeploy). Compile error fix from changes in policy/models repo. Change-Id: If448492ab665c135bace99d4d684d403e2a6be03 Issue-ID: POLICY-1624 Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
2019-03-25Merge "Add MDC Topic Filtering"Jorge Hernandez1-121/+125
2019-03-25Add MDC Topic FilteringDaniel Cruz1-121/+125
A feature to provide configurable properties for network topics to extrac fields from JSON strings and place them in a mapped diagnostic context. Issue-ID: POLICY-1499 Change-Id: Icfca0be3b263ccf1612b79ed617e2b1ffb0317e6 Signed-off-by: Daniel Cruz <dc443y@att.com>
2019-03-21Support topic properties files.Jorge Hernandez4-79/+158
They will be loaded automatically at startup. Remove POLICY-PAP-PDP topic as is moved to a feature. Remove PDPD-CONFIGURATION topic as it is not used. Change-Id: I55629f885d61ce1cc4e3f24bcae5279e65a96f22 Issue-ID: POLICY-1610 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2019-03-19Remove OrderedService referencesDaniel Cruz3-51/+51
Removed OrderedService and OrderedServiceImpl from the drools-pdp repo to use OrderedService and OrderedServiceImpl from the common repo. All feature interfaces were updated occordingly. Issue-ID: POLICY-1499 Change-Id: Icc80dd1cbe73a97d4832f95ad2dad52d948b711a Signed-off-by: Daniel Cruz <dc443y@att.com>
2019-03-15reducing kill timer to better play with k8s onesJorge Hernandez1-2/+2
Change-Id: Ibd69b100468716b929d42c9145fb72153cf685ed Issue-ID: POLICY-1560 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2019-03-07Tweaking scripts to install for pdpd-cl imageJorge Hernandez2-6/+5
Change-Id: I5f7ab5de402a5412938f42ae76e21f112b106b3a Issue-ID: POLICY-1560 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2019-03-04Merge "Add Controller Logging Feature"Jorge Hernandez5-98/+195
2019-03-01Add Controller Logging FeatureDaniel Cruz5-98/+195
This features provides a mechanism to extend the logback.xml properties to add controller specific loggers. The controller's logger will log messages from topics that the controller listens to in a controller specific network log. The original network log is preserved and still logs every message from every controller. Note that the way a logger is associated with a controller is by having the logger name match the controller's name. Any configuration file that has "logback-include-" prepended and a ".xml" extension will be added to the logback.xml and logback-eelf.xml files as extensions to the base configuration. Issue-ID: POLICY-1427 Change-Id: Iaeb823421eadb7ee413b6b03ae3dfe862f230612 Signed-off-by: Daniel Cruz <dc443y@att.com>
2019-03-01move all hard install config to environment varsJorge Hernandez12-239/+305
+ support multiple system properties files with variable interpolation loaded at initialization + support of configurable JVM options (-X, etc ..). + rearrange aaf configuration to avoid {{}} installation variables and use dynamic enviroment variables. + miscellaneous clean up in areas touched and checkstyle. Change-Id: I71ad839778e17eb57c098a2c5cc2bf96e468669a Issue-ID: POLICY-1524 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2019-02-27Base POLICY-PDP-PAP channel configurationJorge Hernandez1-3/+19
With these changes the PDP should come up listening in the new PAP-PDP topic for messages, and configured to send. Change-Id: I395f87a7401aeb6385d640e51f75d71c0def36b0 Issue-ID: POLICY-1548 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2019-02-22Merge "Add Nested JSON Filtering"Jorge Hernandez4-608/+203
2019-02-21Add Nested JSON FilteringDaniel Cruz4-608/+203
The refactoring of the JsonProtocolFilter allows for complex filter queries for JSON events coming in on network topics. The underlying library used is json-path, which supports path based searching and ruby regex filtering at any level of the JSON document. The JsonProtocolFilter no longer requires a FilterRule class as one json-path filter can contain multiple constraints using "&&" or "||". This eliminates the need to identify the field name as a key with a regex associated with it in the controller properties file (see the original FilterRule implementation). It also simplifies the parsing needed in the DroolsControllerFactory when extracting the filter property and creating the JsonProtocolFilter. JUnit coverage is 100% and all sonar flags were addressed related to the JsonProtocolFilter class. Tested and verified working with the telemetry API in a locally deployed PDP-D. Change-Id: I8bd63db4e497c1ba0b5044b5449ccb7a9e4dbdbc Issue-ID: POLICY-1489 Signed-off-by: Daniel Cruz <dc443y@att.com>
2019-02-21Moving hard install config to environment varsJorge Hernandez2-39/+20
Change-Id: I01e0cf2e2399ec81337961e0a2b3a349c34f55c4 Issue-ID: POLICY-1517 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2019-02-15Change properties to use gsonJim Hahn1-1/+2
Modified property files to use gson instead of jackson for REST calls, for both clients and servers. Change-Id: Ib836886df33cd585b4c2d227e9cc496cc165fc2c Issue-ID: POLICY-1431 Signed-off-by: Jim Hahn <jrh3@att.com>
2019-02-15Test gson in policy-managementJim Hahn8-10/+84
Added jackson-like Gson annotations to policy-management classes. Also added tests to verify that the classes serialize the same with gson as with jackson. Removed some trailing spaces. Replaced tabs and adjusted spacing in json files. Removed trailing newlines. Updated license data per review comment. Fixed merge conflict. Added files that were inadvertently deleted. Change-Id: Ib546e70f9d9d83187a6a93ff5c634000c4d53da5 Issue-ID: POLICY-1431 Signed-off-by: Jim Hahn <jrh3@att.com>
2019-02-15Merge "Decouple nexus reconfiguration from installation"Pamela Dragosh1-1/+6
5715e } /* Comment */ .highlight .err { color: #960050; background-color: #1e0010 } /* Error */ .highlight .k { color: #66d9ef } /* Keyword */ .highlight .l { color: #ae81ff } /* Literal */ .highlight .n { color: #f8f8f2 } /* Name */ .highlight .o { color: #f92672 } /* Operator */ .highlight .p { color: #f8f8f2 } /* Punctuation */ .highlight .ch { color: #75715e } /* Comment.Hashbang */ .highlight .cm { color: #75715e } /* Comment.Multiline */ .highlight .cp { color: #75715e } /* Comment.Preproc */ .highlight .cpf { color: #75715e } /* Comment.PreprocFile */ .highlight .c1 { color: #75715e } /* Comment.Single */ .highlight .cs { color: #75715e } /* Comment.Special */ .highlight .gd { color: #f92672 } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gi { color: #a6e22e } /* Generic.Inserted */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #75715e } /* Generic.Subheading */ .highlight .kc { color: #66d9ef } /* Keyword.Constant */ .highlight .kd { color: #66d9ef } /* Keyword.Declaration */ .highlight .kn { color: #f92672 } /* Keyword.Namespace */ .highlight .kp { color: #66d9ef } /* Keyword.Pseudo */ .highlight .kr { color: #66d9ef } /* Keyword.Reserved */ .highlight .kt { color: #66d9ef } /* Keyword.Type */ .highlight .ld { color: #e6db74 } /* Literal.Date */ .highlight .m { color: #ae81ff } /* Literal.Number */ .highlight .s { color: #e6db74 } /* Literal.String */ .highlight .na { color: #a6e22e } /* Name.Attribute */ .highlight .nb { color: #f8f8f2 } /* Name.Builtin */ .highlight .nc { color: #a6e22e } /* Name.Class */ .highlight .no { color: #66d9ef } /* Name.Constant */ .highlight .nd { color: #a6e22e } /* Name.Decorator */ .highlight .ni { color: #f8f8f2 } /* Name.Entity */ .highlight .ne { color: #a6e22e } /* Name.Exception */ .highlight .nf { color: #a6e22e } /* Name.Function */ .highlight .nl { color: #f8f8f2 } /* Name.Label */ .highlight .nn { color: #f8f8f2 } /* Name.Namespace */ .highlight .nx { color: #a6e22e } /* Name.Other */ .highlight .py { color: #f8f8f2 } /* Name.Property */ .highlight .nt { color: #f92672 } /* Name.Tag */ .highlight .nv { color: #f8f8f2 } /* Name.Variable */ .highlight .ow { color: #f92672 } /* Operator.Word */ .highlight .w { color: #f8f8f2 } /* Text.Whitespace */ .highlight .mb { color: #ae81ff } /* Literal.Number.Bin */ .highlight .mf { color: #ae81ff } /* Literal.Number.Float */ .highlight .mh { color: #ae81ff } /* Literal.Number.Hex */ .highlight .mi { color: #ae81ff } /* Literal.Number.Integer */ .highlight .mo { color: #ae81ff } /* Literal.Number.Oct */ .highlight .sa { color: #e6db74 } /* Literal.String.Affix */ .highlight .sb { color: #e6db74 } /* Literal.String.Backtick */ .highlight .sc { color: #e6db74 } /* Literal.String.Char */ .highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */ .highlight .sd { color: #e6db74 } /* Literal.String.Doc */ .highlight .s2 { color: #e6db74 } /* Literal.String.Double */ .highlight .se { color: #ae81ff } /* Literal.String.Escape */ .highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */ .highlight .si { color: #e6db74 } /* Literal.String.Interpol */ .highlight .sx { color: #e6db74 } /* Literal.String.Other */ .highlight .sr { color: #e6db74 } /* Literal.String.Regex */ .highlight .s1 { color: #e6db74 } /* Literal.String.Single */ .highlight .ss { color: #e6db74 } /* Literal.String.Symbol */ .highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #a6e22e } /* Name.Function.Magic */ .highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */ .highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */ .highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */ .highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */ .highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */ } @media (prefers-color-scheme: light) { .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
# Errors
errors:
    OK: {
        code: 200,
        message: "OK"
    }
    CREATED: {
        code: 201,
        message: "OK"
    }
    NO_CONTENT: {
        code: 204,
        message: "No Content"
    }
#--------POL4050-----------------------------     
    NOT_ALLOWED: {
        code: 405,
        message: "Error: Method not allowed.",
        messageId: "POL4050"
    }
#--------POL5000-----------------------------     
    GENERAL_ERROR: {
        code: 500,
        message: "Error: Internal Server Error. Please try again later.",
        messageId: "POL5000"
    }
#---------POL5001------------------------------     
    MISSING_X_ECOMP_INSTANCE_ID: {
        code: 400  ,
        message: "Error: Missing 'X-ECOMP-InstanceID' HTTP header.",
        messageId: "POL5001"
    }
#---------POL5002------------------------------     
    AUTH_REQUIRED: {
        code: 401  ,
        message: "Error: Authentication is required to use the API.",
        messageId: "POL5002"
    }
#---------POL5003------------------------------     
    AUTH_FAILED: {
        code: 403  ,
        message: "Error: Not authorized to use the API.",
        messageId: "POL5003"
    }
#---------SVC4000----------------------------- 
    INVALID_CONTENT: {
        code: 400,
        message: "Error: Invalid content.",
        messageId: "SVC4000"
    }
#---------SVC4002----------------------------- 
    MISSING_INFORMATION: {
        code: 403,
        message: "Error: Missing information.",
        messageId: "SVC4002"
    }
#---------SVC4003------------------------------ 
# %1 - Users's USER_ID     
    USER_NOT_FOUND: {
        code: 404,
        message: "Error: User '%1' was not found.",
        messageId: "SVC4003"
    }
#---------SVC4004----------------------------- 
# %1 - Users's email address     
    INVALID_EMAIL_ADDRESS: {
        code: 400,
        message: "Error: Invalid email address '%1'.",
        messageId: "SVC4004"
    }
#---------SVC4005------------------------------ 
# %1 - role
    INVALID_ROLE: {
        code: 400,
        message: "Error: Invalid role '%1'.",
        messageId: "SVC4005"
    }
#---------SVC4006------------------------------ 
# %1 - Users's USER_ID     
    USER_ALREADY_EXIST: {
        code: 409,
        message: "Error: User with '%1' ID already exists.",
        messageId: "SVC4006"
    }
#---------SVC4007------------------------------ 
    DELETE_USER_ADMIN_CONFLICT: {
        code: 409,
        message: "Error: An administrator can only be deleted by another administrator.",
        messageId: "SVC4007"
    }
#---------SVC4008----------------------------- 
# %1 - Users's userId     
    INVALID_USER_ID: {
        code: 400,
        message: "Error: Invalid userId '%1'.",
        messageId: "SVC4008"
    }
#---------SVC4049------------------------------ 
# %1 - service/resource
    COMPONENT_MISSING_CONTACT: {
        code: 400,
        message: "Error: Invalid Content. Missing %1 contact id.",
        messageId: "SVC4049"
    } 
#---------SVC4050----------------------------- 
# %1 - Service/Resource/Additional parameter
# %2 - service/resource/label name
    COMPONENT_NAME_ALREADY_EXIST: {
        code: 409,
        message: "Error: %1 with name '%2' already exists.",
        messageId: "SVC4050"
    }
#---------SVC4051------------------------------ 
# %1 - resource/service 
    COMPONENT_MISSING_CATEGORY: {
        code: 400,
        message: "Error: Invalid Content. Missing %1 category.",
        messageId: "SVC4051"
    }

#---------SVC4052------------------------------ 
    COMPONENT_MISSING_TAGS: {
        code: 400,
        message: "Error: Invalid Content. At least one tag has to be specified.",
        messageId: "SVC4052"
    }

#---------SVC4053------------------------------ 
# %1 - service/resource
    COMPONENT_MISSING_DESCRIPTION: {
        code: 400,
        message: "Error: Invalid Content. Missing %1 description.",
        messageId: "SVC4053"
    }
#---------SVC4054------------------------------  
# %1 - resource/service
    COMPONENT_INVALID_CATEGORY: {
        code: 400,
        message: "Error: Invalid Content. Invalid %1 category.",
        messageId: "SVC4054"
    }
#---------SVC4055------------------------------ 
    MISSING_VENDOR_NAME: {
        code: 400,
        message: "Error: Invalid Content. Missing vendor name.",
        messageId: "SVC4055"
    }
#---------SVC4056------------------------------ 
    MISSING_VENDOR_RELEASE: {
        code: 400,
        message: "Error: Invalid Content. Missing vendor release.",
        messageId: "SVC4056"
    }

#---------SVC4057------------------------------  
    MISSING_DERIVED_FROM_TEMPLATE: {
        code: 400,
        message: "Error: Invalid Content. Missing derived from template specification.",
        messageId: "SVC4057"
    }

#---------SVC4058------------------------------ 
# %1 - service/resource
    COMPONENT_MISSING_ICON: {
        code: 400,
        message: "Error: Invalid Content. Missing %1 icon.",
        messageId: "SVC4058"
    }
#---------SVC4059------------------------------ 
# %1 - service/resource
    COMPONENT_INVALID_ICON: {
        code: 400,
        message: "Error: Invalid Content. Invalid %1 icon.",
        messageId: "SVC4059"
    }
#---------SVC4060------------------------------  
    PARENT_RESOURCE_NOT_FOUND: {
        code: 400,
        message: "Error: Invalid Content. Derived from resource template was not found.",
        messageId: "SVC4060"
    }
#---------SVC4061------------------------------  
    MULTIPLE_PARENT_RESOURCE_FOUND: {
        code: 400,
        message: "Error: Invalid Content. Multiple derived from resource template is not allowed.",
        messageId: "SVC4061"
    }

#---------SVC4062------------------------------ 
# %1 - service/resource
    MISSING_COMPONENT_NAME: {
        code: 400,
        message: "Error: Invalid Content. Missing %1 name.",
        messageId: "SVC4062"
    }
#---------SVC4063------------------------------  
    #%1  -  resource/service name
    RESOURCE_NOT_FOUND: {
        code: 404,
        message: "Error: Requested '%1' resource was not found.",
        messageId: "SVC4063"
    }

#---------SVC4064------------------------------ 
# %1 - Service/Resource
    COMPONENT_INVALID_DESCRIPTION: {
        code: 400,
        message: "Error: Invalid Content. %1 description contains non-english characters.",
        messageId: "SVC4064"
    }
#---------SVC4065------------------------------ 
# %1 - Service/Resource
# %2 - max resource/service name length 
    COMPONENT_DESCRIPTION_EXCEEDS_LIMIT: {
        code: 400,
        message: "Error: Invalid Content. %1 description exceeds limit of %2 characters.",
        messageId: "SVC4065"
    }
#---------SVC4066------------------------------ 
# %1 - max length   
    COMPONENT_TAGS_EXCEED_LIMIT: {
        code: 400,
        message: "Error: Invalid Content. Tags overall length exceeds limit of %1 characters.",
        messageId: "SVC4066"
    }
#---------SVC4067------------------------------
# %1 - max length  
    VENDOR_NAME_EXCEEDS_LIMIT: {
        code: 400,
        message: "Error: Invalid Content. Vendor name exceeds limit of %1 characters.",
        messageId: "SVC4067"
    }
#---------SVC4068------------------------------
# %1 - max length  
    VENDOR_RELEASE_EXCEEDS_LIMIT: {
        code: 400,
        message: "Error: Invalid Content. Vendor release exceeds limit of %1 characters.",
        messageId: "SVC4068"
    }

#---------SVC4069------------------------------ 
# %1 - Service/Resource/Product
    COMPONENT_INVALID_CONTACT_ID: {
        code: 400,
        message: "Error: Invalid Content. %1 contact id should be in format 'mnnnnnn' or 'aannna' or 'aannnn', where m=m ,a=a-zA-Z and n=0-9",
        messageId: "SVC4069"
    }
#---------SVC4070------------------------------ 
# %1 - Service/Resource
    INVALID_COMPONENT_NAME: {
        code: 400,
        message: 'Error: Invalid Content. %1 name is not allowed to contain characters like <>:"\/|?* and space characters other than regular space.',
        messageId: "SVC4070"
    }

#---------SVC4071------------------------------ 
    INVALID_VENDOR_NAME: {
        code: 400,
        message: 'Error: Invalid Content. Vendor name is not allowed to contain characters like <>:"\/|?* and space characters other than regular space.',
        messageId: "SVC4071"
    }
#---------SVC4072------------------------------ 
    INVALID_VENDOR_RELEASE: {
        code: 400,
        message: 'Error: Invalid Content. Vendor release is not allowed to contain characters like <>:"\/|?* and space characters other than regular space.',
        messageId: "SVC4072"
    }
#---------SVC4073------------------------------ 
# %1 - Service/Resource
# %2 - max  resource/service name  
    COMPONENT_NAME_EXCEEDS_LIMIT: {
        code: 400,
        message: "Error: Invalid Content. %1 name exceeds limit of %2 characters.",
        messageId: "SVC4073"
    }
#---------SVC4080------------------------------  
# %1 - resource/service name
# %2 - resource/service
# %3 - First name of last modifier
# %4 - Last name of last modifier
# %5 - USER_ID of last modifier
    COMPONENT_IN_CHECKOUT_STATE: {
        code: 403,
        message: "Error: Requested '%1' %2 is locked for modification by %3 %4(%5).",
        messageId: "SVC4080"
    }
#---------SVC4081-----------------------------  
# %1 - resource/service name
# %2 - resource/service
# %3 - First name of last modifier
# %4 - Last name of last modifier
# %5 - USER_ID of last modifier
    COMPONENT_IN_CERT_IN_PROGRESS_STATE: {
        code: 403,
        message: "Error: Requested '%1' %2 is locked for certification by %3 %4(%5).",
        messageId: "SVC4081"
    }

#-----------SVC4082---------------------------  
# %1 - resource/service name
# %2 - resource/service
# %3 - First name of last modifier
# %4 - Last name of last modifier
# %5 - USER_ID of last modifier
    COMPONENT_SENT_FOR_CERTIFICATION: {
        code: 403,
        message: "Error: Requested '%1' %2 is sent for certification by %3 %4(%5).",
        messageId: "SVC4082"
    }
#-----------SVC4083---------------------------
    COMPONENT_VERSION_ALREADY_EXIST: {
        code: 409,
        message: "Error: Version of this %1 was already promoted.",
        messageId: "SVC4083"
    }
#-----------SVC4084---------------------------
# %1 - resource/service/product name
# %2 - resource/service/product
# %3 - First name of last modifier
# %4 - Last name of last modifier
# %5 - USER_ID of last modifier
    COMPONENT_ALREADY_CHECKED_IN: {
        code: 409,
        message: "Error: The current version of '%1' %2 was already checked-in by %3 %4(%5).",
        messageId: "SVC4084"
    }
#-----------SVC4085---------------------------
# %1 - resource/service/product name
# %2 - resource/service/product
# %3 - First name of last modifier
# %4 - Last name of last modifier
# %5 - USER_ID of last modifier
    COMPONENT_CHECKOUT_BY_ANOTHER_USER: {
        code: 403,
        message: "Error: %1 %2 has already been checked out by %3 %4(%5).",
        messageId: "SVC4085"
    }
#-----------SVC4086---------------------------
# %1  - resource/service name
# %2  - resource/service
    COMPONENT_IN_USE: {
        code: 403,
        message: "Error: Requested '%1' %2 is in use by another user.",
        messageId: "SVC4086"
    }
#-----------SVC4087---------------------------
# %1 - component name
# %2 - resource/service/product
    COMPONENT_HAS_NEWER_VERSION: {
        code: 409,
        message: "Error: Checking out of the requested version of the '%1' %2 is not allowed as a newer version exists.",
        messageId: "SVC4087"
    }
#-----------SVC4088---------------------------
# %1 - resource/service name
# %2 - resource/service
# %3 - First name of last modifier
# %4 - Last name of last modifier
# %5 - USER_ID of last modifier
    COMPONENT_ALREADY_CERTIFIED: {
        code: 403,
        message: "Error: Requested %1 %2 has already been certified by %3 %4(%5).",
        messageId: "SVC4088"
    }
#-----------SVC4089---------------------------
# %1 - resource/service name
# %2 - resource/service
    COMPONENT_NOT_READY_FOR_CERTIFICATION: {
        code: 403,
        message: "Error: Requested '%1' %2 is not ready for certification.",
        messageId: "SVC4089"
    }
#-----------SVC4100---------------------------
#%1 - property name
    PROPERTY_NOT_FOUND: {
        code: 404,
        message: "Error: Requested '%1' property was not found.",
        messageId: "SVC4100"
    }
#-----------SVC4101---------------------------
#%1 - property name
    PROPERTY_ALREADY_EXIST: {
        code: 409,
        message: "Error: Property with '%1' name already exists.",
        messageId: "SVC4101"
    }

#-----------SVC4102---------------------------
# %1 - capability type name 
    CAPABILITY_TYPE_ALREADY_EXIST: {
        code: 409,
        message: "Error: Capability Type with name '%1' already exists.",
        messageId: "SVC4102"
    }
#-----------SVC4114---------------------------
    AUTH_FAILED_INVALIDE_HEADER: {
        code: 400,
        message: "Error: Invalid Authorization header.",
        messageId: "SVC4114"
    }
#-----------SVC4115---------------------------
# %1 - capability type name 
    MISSING_CAPABILITY_TYPE: {
        code: 400,
        message: "Error: Invalid Content. Missing Capability Type '%1'.",
        messageId: "SVC4115"
    }
    RESOURCE_INSTANCE_BAD_REQUEST: {
        code: 400,
        message: "Error: Invalid Content.",
        messageId: "SVC4116"
    }
#-----------SVC4117---------------------------
# %1 - resource instance name
# %2 - resource instance name
# %3 - requirement name
    RESOURCE_INSTANCE_MATCH_NOT_FOUND: {
        code: 404,
        message: "Error: Match not found between resource instance '%1' and resource instance '%2' for requirement '%3'.",
        messageId: "SVC4117"
    }
#-----------SVC4118---------------------------
# %1 - resource instance name
# %2 - resource instance name
# %3 - requirement name
    RESOURCE_INSTANCE_ALREADY_EXIST: {
        code: 409,
        message: "Error: Resource instances '%1' and '%2' are already associated with requirement '%3'.",
        messageId: "SVC4118"
    }
#-----------SVC4119---------------------------
# %1 - resource instance name
# %2 - resource instance name
# %3 - requirement name
    RESOURCE_INSTANCE_RELATION_NOT_FOUND: {
        code: 404,
        message: "Error: No relation found between resource instances '%1' and '%2' for requirement '%3'.",
        messageId: "SVC4119"
    }
#-----------SVC4120---------------------------
# %1 - User's USER_ID
    USER_INACTIVE: {
        code: 404,
        message: "Error: User %1 was not found.",
        messageId: "SVC4120"
    }
#-----------SVC4121---------------------------
# %1 - User's USER_ID
    USER_HAS_ACTIVE_ELEMENTS: {
        code: 403,
        message: "Error: User with %1 ID can not be deleted since it has active elements(resources/services/artifacts).",
        messageId: "SVC4121"
    }
#-----------SVC4122---------------------------
# %1 - artifact type
    ARTIFACT_TYPE_NOT_SUPPORTED: {
        code: 400,
        message: "Error: Invalid artifact type '%1'.",
        messageId: "SVC4122"
    }
#-----------SVC4123---------------------------
    ARTIFACT_LOGICAL_NAME_CANNOT_BE_CHANGED: {
        code: 400,
        message: "Error: Artifact logical name cannot be changed.",
        messageId: "SVC4123"
    }
#-----------SVC4124---------------------------
    MISSING_ARTIFACT_TYPE: {
        code: 400,
        message: "Error: Missing artifact type.",
        messageId: "SVC4124"
    }
#-----------SVC4125---------------------------
# %1-artifact name
    ARTIFACT_EXIST: {
        code: 400,
        message: "Error: Artifact '%1' already exists.",
        messageId: "SVC4125"
    }
#---------SVC4126------------------------------ 
# %1 - resource/service/product/...
# %2 - field (tag, vendor name...)
    INVALID_FIELD_FORMAT: {
        code: 400,
        message: "Error:  Invalid %1 %2 format.",
        messageId: "SVC4126"
    }
#-----------SVC4127---------------------------
    ARTIFACT_INVALID_MD5: {
        code: 400,
        message: "Error: Invalid artifact checksum.",
        messageId: "SVC4127"
    }
#-----------SVC4128---------------------------
    MISSING_ARTIFACT_NAME: {
        code: 400,
        message: "Error: Invalid content. Missing artifact name.",
        messageId: "SVC4128"
    }
#-----------SVC4129---------------------------
    MISSING_PROJECT_CODE: {
        code: 400,
        message: "Error: Invalid Content. Missing PROJECT_CODE number.",
        messageId: "SVC4129"
    }
#-----------SVC4130---------------------------
    INVALID_PROJECT_CODE: {
        code: 400,
        message: "Error: Invalid Content. PROJECT_CODE number must be numeric from 5 up to 10 digits.",
        messageId: "SVC4130"
    }
#-----------SVC4131---------------------------
# %1-resource/service
# %2-srtifact/artifacts
# %3-semicolomn separated list of artifact 
    COMPONENT_MISSING_MANDATORY_ARTIFACTS: {
        code: 403,
        message: "Error: Missing mandatory informational %1 %2: [%3].",
        messageId: "SVC4131"
    }
#-----------SVC4132---------------------------
# %1 - lifecycle  type name
    LIFECYCLE_TYPE_ALREADY_EXIST: {
        code: 409,
        message: "Error: Lifecycle Type with name '%1' already exists.",
        messageId: "SVC4132"
    }
#-----------SVC4133---------------------------
# %1 - service version
# %2 - service name
    SERVICE_NOT_AVAILABLE_FOR_DISTRIBUTION: {
        code: 403,
        message: "Error: Version %1 of '%2' service is not available for distribution.",
        messageId: "SVC4133"
    }
#-----------SVC4134---------------------------
    MISSING_LIFECYCLE_TYPE: {
        code: 400,
        message: "Error: Invalid Content. Missing interface life-cycle type.",
        messageId: "SVC4134"
    }
#---------SVC4135------------------------------ 
    SERVICE_CATEGORY_CANNOT_BE_CHANGED: {
        code: 400,
        message: "Error: Service category cannot be changed once the service is certified.",
        messageId: "SVC4135"
    }
#---------SVC4136------------------------------ 
# %1 - distribution environment name    
    DISTRIBUTION_ENVIRONMENT_NOT_AVAILABLE: {
        code: 500,
        message: "Error: Requested distribution environment '%1' is not available.",
        messageId: "SVC4136"
    }
#---------SVC4137------------------------------ 
# %1 - distribution environment name    
    DISTRIBUTION_ENVIRONMENT_NOT_FOUND: {
        code: 400,
        message: "Error: Requested distribution environment '%1' was not found.",
        messageId: "SVC4137"
    }
#---------SVC4138------------------------------     
    DISTRIBUTION_ENVIRONMENT_INVALID: {
        code: 400,
        message: "Error: Invalid distribution environment.",
        messageId: "SVC4138"
    }
#---------SVC4139------------------------------     
# %1 - service name
    DISTRIBUTION_ARTIFACT_NOT_FOUND: {
        code: 409,
        message: "Error: Service '%1' cannot be distributed due to missing deployment artifacts.",
        messageId: "SVC4139"
    }
#---------SVC4200------------------------------ 
# %1 - Service/Resource
# %2 - max icon name length   
    COMPONENT_ICON_EXCEEDS_LIMIT: {
        code: 400,
        message: "Error: Invalid Content. %1 icon name exceeds limit of %2 characters.",
        messageId: "SVC4200"
    }
#---------SVC4300------------------------------ 
    RESTRICTED_ACCESS: {
        code: 403,
        message: "Error: Restricted access.",
        messageId: "SVC4300"
    }
#---------SVC4301------------------------------ 
    RESTRICTED_OPERATION: {
        code: 409,
        message: "Error: Restricted operation.",
        messageId: "SVC4301"
    }
#---------SVC4500------------------------------     
    MISSING_BODY: {
        code: 400  ,
        message: "Error: Missing request body.",
        messageId: "SVC4500"
    }
#---------SVC4501------------------------------
    MISSING_PUBLIC_KEY: {
        code: 400  ,
        message: "Error: Invalid Content. Missing mandatory parameter 'apiPublicKey'." ,
        messageId: "SVC4501"
    }
#---------SVC4502------------------------------     
    DISTRIBUTION_ENV_DOES_NOT_EXIST: {
        code: 400  ,
        message: "Error: Invalid  Body  : Missing mandatory parameter 'distrEnvName'." ,
        messageId: "SVC4502"
    }
#-----------SVC4503---------------------------
# %1 - service name
    SERVICE_NOT_FOUND: {
        code: 404,
        message: "Error: Requested '%1' service was not found.",
        messageId: "SVC4503"
    }

#---------SVC4504------------------------------ 
# %1 - Service/Resource
# %2 - service/resource version
    COMPONENT_VERSION_NOT_FOUND: {
        code: 404,
        message: "Error: %1 version %2 was not found.",
        messageId: "SVC4504"
    }
#-----------SVC4505---------------------------
    #%1-artifact name
 
    ARTIFACT_NOT_FOUND: {
        code: 404,
        message: "Error: Artifact '%1' was not found.",
        messageId: "SVC4505"
    }
#---------SVC4506------------------------------ 
    MISSING_ENV_NAME: {
        code: 400  ,
        message: "Error: Invalid Content. Missing mandatory parameter 'distrEnvName'.",
        messageId: "SVC4506"
    }
#---------SVC4507------------------------------ 
    COMPONENT_INVALID_TAGS_NO_COMP_NAME: {
        code: 400,
        message: "Error: Invalid Content. One of the tags should be the component name.",
        messageId: "SVC4507"
    }
 
#---------SVC4508------------------------------ 
    SERVICE_NAME_CANNOT_BE_CHANGED: {
        code: 400,
        message: "Error: Service name cannot be changed once the service is certified.",
        messageId: "SVC4508"
    }

#---------SVC4509------------------------------ 
    SERVICE_ICON_CANNOT_BE_CHANGED: {
        code: 400,
        message: "Error: Icon cannot be changed once the service is certified.",
        messageId: "SVC4509"
    }
#---------SVC4510------------------------------ 
# %1 - icon name max length
    SERVICE_ICON_EXCEEDS_LIMIT: {
        code: 400,
        message: "Error: Invalid Content. Icon name exceeds limit of %1 characters.",
        messageId: "SVC4510"
    }
#---------SVC4511------------------------------ 
    DISTRIBUTION_REQUESTED_NOT_FOUND: {
        code: 404,
        message: "Error: Requested distribution was not found.",
        messageId: "SVC4511"
    }
#---------SVC4512------------------------------ 
# %1 - Distribution ID
    DISTRIBUTION_REQUESTED_FAILED: {
        code: 403,
        message: "Error: Requested distribution '%1' failed.",
        messageId: "SVC4512"
    }
#---------SVC4513------------------------------ 
    RESOURCE_CATEGORY_CANNOT_BE_CHANGED: {
        code: 400,
        message: "Error: Resource category cannot be changed once the resource is certified.",
        messageId: "SVC4513"
    }
#---------SVC4514------------------------------ 
    RESOURCE_NAME_CANNOT_BE_CHANGED: {
        code: 400,
        message: "Error: Resource name cannot be changed once the resource is certified.",
        messageId: "SVC4514"
    }
#---------SVC4515------------------------------ 
    RESOURCE_ICON_CANNOT_BE_CHANGED: {
        code: 400,
        message: "Error: Icon cannot be changed once the resource is certified.",
        messageId: "SVC4515"
    }
#---------SVC4516------------------------------ 
    RESOURCE_VENDOR_NAME_CANNOT_BE_CHANGED: {
        code: 400,
        message: "Error: Vendor name cannot be changed once the resource is certified.",
        messageId: "SVC4516"
    }
#---------SVC4517------------------------------ 
    RESOURCE_DERIVED_FROM_CANNOT_BE_CHANGED: {
        code: 400,
        message: "Error: Derived from resource template cannot be changed once the resource is certified.",
        messageId: "SVC4517"
    }
#---------SVC4518------------------------------ 
# %1 - max length 
    COMPONENT_SINGLE_TAG_EXCEED_LIMIT: {
        code: 400,
        message: "Error: Invalid Content. Single tag exceeds limit of %1 characters.",
        messageId: "SVC4518"
    }
#---------SVC4519------------------------------ 
    INVALID_DEFAULT_VALUE: {
        code: 400,
        message: "Error: mismatch in data-type occurred for property %1. data type is %2 and default value found is %3.",
        messageId: "SVC4519"
    }
#---------SVC4520------------------------------ 
# %1 - service or resource 
    ADDITIONAL_INFORMATION_MAX_NUMBER_REACHED: {
        code: 409,
        message: "Error: Maximal number of additional %1 parameters was reached.",
        messageId: "SVC4520"
    }
#---------SVC4521------------------------------
    ADDITIONAL_INFORMATION_EMPTY_STRING_NOT_ALLOWED: {
        code: 400,
        message: "Error: Invalid Content. The Additional information label and value cannot be empty.",
        messageId: "SVC4521"
    }
#---------SVC4522------------------------------ 
# %1 - label/value
# %2 - Maximal length of %1
    ADDITIONAL_INFORMATION_EXCEEDS_LIMIT: {
        code: 400,
        message: "Error: Invalid Content. Additional information %1 exceeds limit of %2 characters.",
        messageId: "SVC4522"
    }
#---------SVC4523------------------------------
    ADDITIONAL_INFORMATION_KEY_NOT_ALLOWED_CHARACTERS: {
        code: 400,
        message: 'Error: Invalid Content. Additional information label is not allowed to contain characters like <>:"\/|?* and space characters other than regular space.',
        messageId: "SVC4523"
    }
#---------SVC4524------------------------------
    ADDITIONAL_INFORMATION_NOT_FOUND: {
        code: 409,
        message: "Error: Requested additional information was not found.",
        messageId: "SVC4524"
    }
#---------SVC4525------------------------------    
    ADDITIONAL_INFORMATION_VALUE_NOT_ALLOWED_CHARACTERS: {
        code: 400,
        message: 'Error: Invalid Content. Additional information contains non-english characters.',
        messageId: "SVC4525"
    }
#---------SVC4526------------------------------ 
    RESOURCE_INSTANCE_NOT_FOUND: {
        code: 404,
        message: "Error: Requested '%1' resource instance was not found.",
        messageId: "SVC4526"
    }
#---------SVC4527------------------------------ 
    ASDC_VERSION_NOT_FOUND: {
        code: 500,
        message: 'Error: ASDC version cannot be displayed.',
        messageId: "SVC4527"
    }
#---------SVC4528------------------------------ 
# %1-artifact url/artifact label/artifact description/VNF Service Indicator
    MISSING_DATA: {
        code: 400,
        message: "Error: Invalid content. Missing %1.",
        messageId: "SVC4528"
    }
#---------SVC4529------------------------------ 
# %1-artifact url/artifact label/artifact description/artifact name
# %2 - Maximal length of %1
    EXCEEDS_LIMIT: {
        code: 400,
        message: "Error: Invalid Content. %1 exceeds limit of %2 characters.",
        messageId: "SVC4529"
    }
#---------SVC4530------------------------------ 
    ARTIFACT_INVALID_TIMEOUT: {
        code: 400,
        message: "Error: Invalid Content. Artifact Timeout should be set to valid positive non-zero number of minutes.",
        messageId: "SVC4530"
    }
#---------SVC4531------------------------------ 
    SERVICE_IS_VNF_CANNOT_BE_CHANGED: {
        code: 400,
        message: "Error: VNF Indicator cannot be updated for certified service.",
        messageId: "SVC4531"
    }
 #---------SVC4532------------------------------ 
    RESOURCE_INSTANCE_NOT_FOUND_ON_SERVICE: {
        code: 404,
        message: "Error: Requested '%1' resource instance was not found on the service '%2.",
        messageId: "SVC4532"
    }
 #---------SVC4533------------------------------ 
 # %1 -  "HEAT"/"HEAT_ENV"/"MURANO_PKG"/"YANG_XML" 
    WRONG_ARTIFACT_FILE_EXTENSION: {
        code: 400,
        message: "Error: Invalid file extension for %1 artifact type.",
        messageId: "SVC4533"
    }

#---------SVC4534------------------------------ 
# %1 -  "HEAT"/"HEAT_ENV"             
    INVALID_YAML: {
        code: 400,
        message: "Error: Uploaded YAML file for %1 artifact is invalid.",
        messageId: "SVC4534"
    }

#---------SVC4535------------------------------ 
# %1 -  "HEAT"             
    INVALID_DEPLOYMENT_ARTIFACT_HEAT: {
        code: 400,
        message: "Error: Invalid %1 artifact.",
        messageId: "SVC4535"
    }
#---------SVC4536------------------------------ 
# %1 - "Resource"/"Service"
# %2 -  resource/service name 
# %3 -  "HEAT"/"HEAT_ENV"/"MURANO_PKG" 
# %4 -  "HEAT"/"HEAT_ENV"/"MURANO_PKG
    DEPLOYMENT_ARTIFACT_OF_TYPE_ALREADY_EXISTS: {
        code: 400,
        message: "Error: %1 '%2' already has a deployment artifact of %3 type .Please delete or update an existing %4 artifact.",
        messageId: "SVC4536"
    }

#---------SVC4537------------------------------ 
    MISSING_HEAT: {
        code: 400,
        message: "Error: Missing HEAT artifact. HEAT_ENV artifact cannot be uploaded without corresponding HEAT template.",
        messageId: "SVC4537"
    }
#---------SVC4538------------------------------ 
    MISMATCH_HEAT_VS_HEAT_ENV: {
        code: 400,
        message: "Error: Invalid artifact content. Parameter's set in HEAT_ENV '%1' artifact doesn't match the parameters in HEAT '%2' artifact.",
        messageId: "SVC4538"
    }
#---------SVC4539------------------------------ 
    INVALID_RESOURCE_PAYLOAD: {
        code: 400,
        message: "Error: Invalid resource payload.",
        messageId: "SVC4539"
    }
#---------SVC4540------------------------------ 
    INVALID_TOSCA_FILE_EXTENSION: {
        code: 400,
        message: "Error: Invalid file extension for TOSCA template.",
        messageId: "SVC4540"
    }
#---------SVC4541------------------------------ 
    INVALID_YAML_FILE: {
        code: 400,
        message: "Error: Invalid YAML file.",
        messageId: "SVC4541"
    }
#---------SVC4542------------------------------ 
    INVALID_TOSCA_TEMPLATE: {
        code: 400,
        message: "Error: Invalid TOSCA template.",
        messageId: "SVC4542"
    }
#---------SVC4543------------------------------ 
    NOT_RESOURCE_TOSCA_TEMPLATE: {
        code: 400,
        message: "Error: Imported Service TOSCA template.",
        messageId: "SVC4543"
    }
#---------SVC4544------------------------------ 
    NOT_SINGLE_RESOURCE: {
        code: 400,
        message: "Error: Imported TOSCA template should contain one resource definition.",
        messageId: "SVC4544"
    }
#---------SVC4545------------------------------ 
    INVALID_RESOURCE_NAMESPACE: {
        code: 400,
        message: "Error: Invalid resource namespace.",
        messageId: "SVC4545"
    }
#---------SVC4546------------------------------ 
    RESOURCE_ALREADY_EXISTS: {
        code: 400,
        message: "Error: Imported resource already exists in ASDC Catalog.",
        messageId: "SVC4546"
    }
#---------SVC4549------------------------------ 
    INVALID_RESOURCE_CHECKSUM: {
        code: 400,
        message: "Error: Invalid resource checksum.",
        messageId: "SVC4549"
    }
#---------SVC4550------------------------------ 
    #%1  -  Consumer salt
    INVALID_LENGTH: {
        code: 400,
        message: "Error: Invalid %1 length.",
        messageId: "SVC4550"
    }
    #---------SVC4551------------------------------  
    #%1  -  ECOMP User name
    ECOMP_USER_NOT_FOUND: {
        code: 404,
        message: "Error: ECOMP User '%1' was not found.",
        messageId: "SVC4551"
    }
#---------SVC4552------------------------------
    CONSUMER_ALREADY_EXISTS: {
        code: 409,
        message: "Error: ECOMP User already exists.",
        messageId: "SVC4552"
    }
#---------SVC4553-----------------------------
    #%1  -  Consumer name / Consumer password/ Consumer salt 
    INVALID_CONTENT_PARAM: {
        code: 400,
        message: "Error: %1 is invalid.",
        messageId: "SVC4553"
    }
    #---------SVC4554------------------------------ 
# %1 - "Resource"/"Service"
    COMPONENT_ARTIFACT_NOT_FOUND: {
        code: 404,
        message: "Error: Requested artifact doesn't belong to specified %1.",
        messageId: "SVC4554"
    }
#---------SVC4554------------------------------
# %1 - "Service name"
    SERVICE_DEPLOYMENT_ARTIFACT_NOT_FOUND: {
        code: 403,
        message: "Error: Requested '%1' service is not ready for certification. Service has to have at least one deployment artifact.",
        messageId: "SVC4554"
    }
#---------SVC4555------------------------------ 
#%1 - "Resource"/"Service"/"Product"
#%2 - "category"
    COMPONENT_ELEMENT_INVALID_NAME_LENGTH: {
        code: 400,
        message: "Error: Invalid %1 %2 name length.",
        messageId: "SVC4555"
    }
#---------SVC4556------------------------------ 
#%1 - "Resource"/"Service"/"Product"
#%2 - "category"
    COMPONENT_ELEMENT_INVALID_NAME_FORMAT: {
        code: 400,
        message: "Error: Invalid %1 %2 name format.",
        messageId: "SVC4556"
    }
#---------SVC4557------------------------------ 
#%1 - "Resource"/"Service"/"Product"
#%2 - "category name"
    COMPONENT_CATEGORY_ALREADY_EXISTS: {
        code: 409,
        message: "Error: %1 category name '%2' already exists.",
        messageId: "SVC4557"
    }
#---------SVC4558------------------------------
# %1 - "service"/"VF"
# %2 - "Resource name"
    VALIDATED_RESOURCE_NOT_FOUND: {
        code: 403,
        message: "Error: Submit for Testing is not permitted as your '%1' includes non-validated '%2' resource.",
        messageId: "SVC4558"
    }
#---------SVC4559------------------------------
# %1 - "service"/"VF"
# %2 - "Resource name"
    FOUND_ALREADY_VALIDATED_RESOURCE: {
        code: 403,
        message: "Error: Submit for Testing is not permitted as your '%1' includes non-validated '%2' resource. Please use already available validated resource version.",
        messageId: "SVC4559"
    }
#---------SVC4560------------------------------
# %1 - "service"/"VF"
# %2 - "Resource name"
    FOUND_LIST_VALIDATED_RESOURCES: {
        code: 403,
        message: "Error: Submit for Testing is not permitted as your '%1' includes non-validated '%2' resource. Please use one of available validated resource versions.",
        messageId: "SVC4560"
    }  
#---------SVC4561------------------------------
# %1 - "resource"/"product"
# %2 - "category"
# %2 - "category name"
    COMPONENT_CATEGORY_NOT_FOUND: {
        code: 404,
        message: "Error: Requested %1 %2 '%3' was not found.",
        messageId: "SVC4561"
    }
#---------SVC4562------------------------------
# %1 - "Resource"/"Product"
# %2 - "sub-category name"
# %2 - "category name"
    COMPONENT_SUB_CATEGORY_EXISTS_FOR_CATEGORY: {
        code: 409,
        message: "Error: %1 sub-category '%2' already exists under '%3' category.",
        messageId: "SVC4562"
    }
#---------SVC4563------------------------------
# %1 - "Product"
# %2 - "grouping name"
# %2 - "sub-category name"
    COMPONENT_GROUPING_EXISTS_FOR_SUB_CATEGORY: {
        code: 409,
        message: "Error: %1 grouping '%2' already exists under '%3' sub-category.",
        messageId: "SVC4563"
    }
#---------SVC4564------------------------------ 
# %1 - product name
    PRODUCT_NOT_FOUND: {
        code: 404,
        message: "Error: Requested '%1' product was not found.",
        messageId: "SVC4564"
    }
#---------SVC4565------------------------------ 
# %1 - "HEAT"   
# %2  - parameter type ("string" , "boolean" , "number") 
# %3 -  parameter name
    INVALID_HEAT_PARAMETER_VALUE: {
        code: 400,
        message: "Error: Invalid %1 artifact. Invalid %2 value set for '%3' parameter.",
        messageId: "SVC4565"
    }
#---------SVC4566------------------------------ 
# %1 - "HEAT"   
# %2  - parameter type ("string" , "boolean" , "number") 
    INVALID_HEAT_PARAMETER_TYPE: {
        code: 400,
        message: "Error: Invalid %1 artifact. Unsupported '%2' parameter type.",
        messageId: "SVC4566"
    }
#---------SVC4567------------------------------ 
# %1 -  "YANG_XML"             
    INVALID_XML: {
        code: 400,
        message: "Error: Uploaded XML file for %1 artifact is invalid.",
        messageId: "SVC4567"
    }
#---------SVC4567------------------------------ 
# %1 - "User Name and UserId"   
# %2  -"checked-out"/"in-certification"
    CANNOT_DELETE_USER_WITH_ACTIVE_ELEMENTS: {
        code: 409,
        message: "Error: User cannot be deleted. User '%1' has %2 projects.",
        messageId: "SVC4567"
    }
#---------SVC4568------------------------------ 
# %1 - "User Name and UserId"   
# %2  -"checked-out"/"in-certification"
    CANNOT_UPDATE_USER_WITH_ACTIVE_ELEMENTS: {
        code: 409,
        message: "Error: Role cannot be changed. User '%1' has %2 projects.",
        messageId: "SVC4568"
    }
#---------SVC4570------------------------------ 
    UPDATE_USER_ADMIN_CONFLICT: {
        code: 409,
        message: "Error: An administrator is not allowed to change his/her role.",
        messageId: "SVC4570"
    }
#---------SVC4571------------------------------ 
    SERVICE_CANNOT_CONTAIN_SUBCATEGORY: {
        code: 400,
        message: "Error: Sub category cannot be defined for service",
        messageId: "SVC4571"
    }
#---------SVC4572------------------------------ 
# %1 - "Resource"/"Service"
    COMPONENT_TOO_MUCH_CATEGORIES: {
        code: 400,
        message: "Error: %1 must have only 1 category",
        messageId: "SVC4572"
    }
#---------SVC4574------------------------------ 
    RESOURCE_TOO_MUCH_SUBCATEGORIES: {
        code: 400,
        message: "Error: Resource must have only 1 sub category",
        messageId: "SVC4574"
    }
#---------SVC4575------------------------------ 
    COMPONENT_MISSING_SUBCATEGORY: {
        code: 400,
        message: "Error: Missing sub category",
        messageId: "SVC4575"
    }
 #---------SVC4576------------------------------ 
# %1 - "component type"
    UNSUPPORTED_ERROR: {
        code: 400,
        message: "Error : Requested component type %1 is unsupported.",
        messageId: "SVC4576"
    }
    #---------SVC4577------------------------------ 
# %1 - "resource type"
    RESOURCE_CANNOT_CONTAIN_RESOURCE_INSTANCES: {
        code: 409,
        message: "Error : Resource of type %1 cannot contain resource instances.",
        messageId: "SVC4577"
    }
#---------SVC4578------------------------------ 
# %1 - "Resource"/"Service"
# %2 -  resource/service name 
# %3 -  "artifact name" 
    DEPLOYMENT_ARTIFACT_NAME_ALREADY_EXISTS: {
        code: 400,
        message: "Error: %1 '%2' already has a deployment artifact named '%3'.",
        messageId: "SVC4578"
    }
#---------SVC4579------------------------------ 
# %1 - "Category"/"Sub-Category"/"Group"
# %2 -  category/sub-category/grouping name.
    INVALID_GROUP_ASSOCIATION: {
        code: 400,
        message: "Error: Invalid group association. %1 '%2' was not found.",
        messageId: "SVC4579"
    }
#---------SVC4580------------------------------ 
    EMPTY_PRODUCT_CONTACTS_LIST: {
        code: 400,
        message: "Error: Invalid content. At least one Product Contact has to be specified.",
        messageId: "SVC4580"
    }
#---------SVC4581------------------------------ 
# %1 - userId
    INVALID_PRODUCT_CONTACT: {
        code: 400,
        message: "Error: Invalid content. User '%1' cannot be set as Product Contact.",
        messageId: "SVC4581"
    }
#---------SVC4582------------------------------ 
# %1 - Product
# %2 - "abbreviated"/"full"
    MISSING_ONE_OF_COMPONENT_NAMES: {
        code: 400,
        message: "Error: Invalid content. Missing %1 %2 name.",
        messageId: "SVC4582"
    }    
#---------SVC4583------------------------------
# %1 - "Icon"
# %2 - "resource"/"service"/"product"
    COMPONENT_PARAMETER_CANNOT_BE_CHANGED: {
        code: 400,
        message: "Error: %1 cannot be changed once the %2 is certified.",
        messageId: "SVC4583"
    }
#---------SVC4584------------------------------
# %1  - service/VF name 
# %2 - "service" /"VF"
# %3 -  resource instance origin type
# %4 -  resource instance name 
# %5 -  requirement/capability
# %6 -  requirement/capability name
# %7 -  "fulfilled" (for req)/"consumed (for cap)"
    REQ_CAP_NOT_SATISFIED_BEFORE_CERTIFICATION: {
        code: 403,
        message: "Error:  Requested '%1' %2 is not ready for certification.  %3 '%4' has to have %5 '%6' %7.",
        messageId: "SVC4584"
    }
#---------SVC4585------------------------------ 
    INVALID_OCCURRENCES: {
        code: 400,
        message: "Error: Invalid occurrences format.",
        messageId: "SVC4585"
    }
#---------SVC4586------------------------------ 
#---------SVC4586------------------------------ 
    INVALID_SERVICE_API_URL: {
        code: 400,
        message: 'Error: Invalid Service API URL. Please check whether your URL has a valid domain extension and does not contain the following characters - #?&@%+;,=$<>~^`\[]{}|"*!',
        messageId: "SVC4586"
    }
#---------SVC4587------------------------------ 
# %1  - Data type name 
    DATA_TYPE_ALREADY_EXIST: {
        code: 409,
        message: 'Error: Data type %1 already exists.',
        messageId: "SVC4587"
    }
#---------SVC4588------------------------------ 
# %1  - Data type name 
    DATA_TYPE_NOR_PROPERTIES_NEITHER_DERIVED_FROM: {
        code: 400,
        message: 'Error: Invalid Data type %1. Data type must have either a valid derived from declaration or at least one valid property',
        messageId: "SVC4588"
    }
#---------SVC4589------------------------------ 
# %1  - Data type name 
    DATA_TYPE_PROPERTIES_CANNOT_BE_EMPTY: {
        code: 400,
        message: "Error: Invalid Data type %1. 'properties' parameter cannot be empty if provided.",
        messageId: "SVC4589"
    }
#---------SVC4590------------------------------ 
# %1  - Property type name 
# %2  - Property name
    INVALID_PROPERTY_TYPE: {
        code: 400,
        message: "Error: Invalid Property type %1 in property %2.",
        messageId: "SVC4590"
    }
#---------SVC4591------------------------------ 
# %1  - Property inner type
# %2  - Property name 
    INVALID_PROPERTY_INNER_TYPE: {
        code: 400,
        message: "Error: Invalid property inner type %1, in property %2",
        messageId: "SVC4591"
    }
#---------SVC4592------------------------------ 
# %1  - component instance name
# %2  - "resource instance"/"service instance"
    COMPONENT_INSTANCE_NOT_FOUND: {
        code: 404,
        message: "Error: Requested '%1' %2 was not found.",
        messageId: "SVC4592"
    }
#---------SVC4593------------------------------ 
# %1 - component instance name
# %2 - "resource instance"/"service instance"
# %3 - "resource/"service"/"product"
# %4 - container name 
    COMPONENT_INSTANCE_NOT_FOUND_ON_CONTAINER: {
        code: 404,
        message: "Error: Requested '%1' %2 was not found on the %3 '%4'.",
        messageId: "SVC4593"
    }
#---------SVC4594------------------------------
#%1 - requirement / capability
#%2 - requirement name
    IMPORT_DUPLICATE_REQ_CAP_NAME: {
        code: 400,
        message: "Error: Imported TOSCA template contains more than one %1 named '%2'.",
        messageId: "SVC4594"
    }
#---------SVC4595------------------------------
#%1 - requirement / capability
#%2 - requirement name
#%3 - parent containing the requirement 
    IMPORT_REQ_CAP_NAME_EXISTS_IN_DERIVED: {
        code: 400,
        message: "Error: Imported TOSCA template contains %1 '%2' that is already defined by derived template %3.",
        messageId: "SVC4595"
    }
#---------SVC4596------------------------------ 
# %1  - Data type name
    DATA_TYPE_DERIVED_IS_MISSING: {
        code: 400,
        message: "Error: Invalid Content. The ancestor data type %1 cannot be found in the system.",
        messageId: "SVC4596"
    }
#---------SVC4597------------------------------ 
# %1  - Data type name
# %2  - Property names
    DATA_TYPE_PROPERTY_ALREADY_DEFINED_IN_ANCESTOR: {
        code: 400,
        message: "Error: Invalid Content. The data type %1 contains properties named %2 which are already defined in one of its ancestors.",
        messageId: "SVC4597"
    }
#---------SVC4598------------------------------ 
# %1  - Data type name
    DATA_TYPE_DUPLICATE_PROPERTY: {
        code: 400,
        message: "Error: Invalid Content. The data type %1 contains duplicate property.",
        messageId: "SVC4598"
    }
#---------SVC4599------------------------------ 
# %1  - Data type name
# %2  - Property names
    DATA_TYPE_PROEPRTY_CANNOT_HAVE_SAME_TYPE_OF_DATA_TYPE: {
        code: 400,
        message: "Error: Invalid Content. The data type %1 contains properties %2 which their type is this data type.",
        messageId: "SVC4599"
    }
#---------SVC4600------------------------------ 
# %1  - Data type name
    DATA_TYPE_CANNOT_HAVE_PROPERTIES: {
        code: 400,
        message: "Error: Invalid Content. The data type %1 cannot have properties since it is of type scalar",
        messageId: "SVC4600"
    }
#---------SVC4601------------------------------ 
    NOT_TOPOLOGY_TOSCA_TEMPLATE: {
        code: 400,
        message: "Error: TOSCA yaml file %1 cannot be modeled to VF as it does not contain 'topology_template.",
        messageId: "SVC4601"
    }
#---------SVC4602--------------------------------
# %1 - yaml file name
# %2 - node_template label
# %3 - node_template type
    INVALID_NODE_TEMPLATE: {
        code: 400,
        message: "Error: TOSCA yaml file '%1' contains node_template '%2' of type '%3' that does not represent existing VFC/CP/VL",
        messageId: "SVC4602"
    }
#---------SVC4603------------------------------  
# %1 - component type
# %2 - component name
# %3 - state
    ILLEGAL_COMPONENT_STATE: {
        code: 403,
        message: "Error: Component instance of %1 can not be created because the component '%2' is in an illegal state %3.",
        messageId: "SVC4603"
    }
#---------SVC4604------------------------------  
# %1 - csar file name
    CSAR_INVALID: {
        code: 400,
        message: "Error: TOSCA CSAR '%1' is invalid. 'TOSCA-Metadata/Tosca.meta' file must be provided.",
        messageId: "SVC4604"
    }
#---------SVC4605------------------------------  
# %1 - csar file name
    CSAR_INVALID_FORMAT: {
        code: 400,
        message: "Error: TOSCA CSAR '%1' is invalid. Invalid 'TOSCA-Metadata/Tosca.meta' file format.",
        messageId: "SVC4605"
    }
#---------SVC4606------------------------------  
# %1 - property name
# %2 - property type
# %3 - property innerType
# %4 - default value is
    INVALID_COMPLEX_DEFAULT_VALUE: {
        code: 400,
        message: "Error: Invalid default value of property %1. Data type is %2 with inner type %3 and default value found is %4.",
        messageId: "SVC4606"
    }
#---------SVC4607------------------------------  
# %1 - csar file name
    CSAR_NOT_FOUND: {
        code: 400,
        message: "Error: TOSCA CSAR '%1' is not found.",
        messageId: "SVC4607"
    }
#---------SVC4608------------------------------  
# %1 - artifact name
# %2 - component type
# %3 - actual component type
    MISMATCH_BETWEEN_ARTIFACT_TYPE_AND_COMPONENT_TYPE: {
        code: 400,
        message: "Error: Artifact %1 is only compatible with component of type %2, but component type is %3.",
        messageId: "SVC4608"
    }

#---------SVC4609------------------------------ 
# %1 -  "INVALID_JSON"             
    INVALID_JSON: {
        code: 400,
        message: "Error: Uploaded JSON file for %1 artifact is invalid.",
        messageId: "SVC4609"
    }
#---------SVC4610------------------------------  
# %1 - csar file name
# %2 - missing file name
    YAML_NOT_FOUND_IN_CSAR: {
        code: 400,
        message: "Error - TOSCA CSAR %1 is invalid. TOSCA-Metadata/Tosca.meta refers to file %2 that is not provided.",
        messageId: "SVC4610"
    }
#---------SVC4611------------------------------  
# %1 - group name
    GROUP_MEMBER_EMPTY: {
        code: 400,
        message: "Error: Invalid Content. Group %1 member list was provided but does not have values",
        messageId: "SVC4611"
    }
#---------SVC4612------------------------------ 
# %1  - group name 
    GROUP_TYPE_ALREADY_EXIST: {
        code: 409,
        message: 'Error: Group type %1 already exists.',
        messageId: "SVC4612"
    }
#---------SVC4613------------------------------  
# %1 - group name
# %2 - VF name(component name)
# %3 - actual component type [VF]
    GROUP_ALREADY_EXIST: {
        code: 409,
        message: "Error: Group with name '%1' already exists in %2 %3.",
        messageId: "SVC4613"
    }   
#---------SVC4614------------------------------  
# %1 - group type
    GROUP_TYPE_IS_INVALID: {
        code: 400,
        message: "Error: Invalid content. Group type %1 does not exist",
        messageId: "SVC4614"
    }
#---------SVC4615------------------------------  
# %1 - group name
    GROUP_MISSING_GROUP_TYPE: {
        code: 400,
        message: "Error: Invalid Content. Missing Group Type for group '%1'",
        messageId: "SVC4615"
    }
#---------SVC4616------------------------------
# %1 - member name
# %2 - group name
# %3 - VF name
# %4 - component type [VF ]
    GROUP_INVALID_COMPONENT_INSTANCE: {
        code: 400,
        message: "Error: member %1 listed in group %2 is not part of %3 %4.",
        messageId: "SVC4616"
    }                 
#---------SVC4617------------------------------
# %1 - member name
# %2 - group name
# %3 - group type
    GROUP_INVALID_TOSCA_NAME_OF_COMPONENT_INSTANCE: {
        code: 400,
        message: "Error: member %1 listed in group %2 is not part of allowed members of group type %3.",
        messageId: "SVC4617"
    }
#---------SVC4618------------------------------ 
# %1 - missing file name
# %2 - csar file name
    ARTIFACT_NOT_FOUND_IN_CSAR: {
        code: 400,
        message: "Error: artifact %1 is defined in CSAR %2 manifest but is not provided",
        messageId: "SVC4618"
    }
#---------SVC4619------------------------------ 
# %1 - artifact name
# %2 - artifact type
# %3 - existing artifact type
    ARTIFACT_ALRADY_EXIST_IN_DIFFERENT_TYPE_IN_CSAR: {
        code: 400,
        message: "Error: artifact %1 in type %2 already exists in type %3.",
        messageId: "SVC4619"
    }
#---------SVC4620------------------------------ 
    FAILED_RETRIVE_ARTIFACTS_TYPES: {
        code: 400,
        message: "Error: Failed to retrieve list of suported artifact types.",
        messageId: "SVC4620"
    }
#---------SVC4621------------------------------ 
# %1 - artifact name
# %2 - master 
    ARTIFACT_ALRADY_EXIST_IN_MASTER_IN_CSAR: {
        code: 400,
        message: "Error: artifact %1 already exists in master %2 .",
        messageId: "SVC4621"
    }
#---------SVC4622------------------------------ 
# %1 - artifact name
# %2 - artifact type 
# %3 - master name
# %4 - master type
    ARTIFACT_NOT_VALID_IN_MASTER: {
        code: 400,
        message: "Error: artifact %1 in type %2 can not be exists under master %3 in type %4.",
        messageId: "SVC4622"
    }
#---------SVC4623------------------------------ 
# %1 - artifact name
# %2 - artifact type 
# %3 - env name
# %4 - existing env
    ARTIFACT_NOT_VALID_ENV: {
        code: 400,
        message: "Error: Artifact %1 in type %2 with env %3 already exists with another env %4",
        messageId: "SVC4623"
    }
#---------SVC4624------------------------------  
# %1 - groups names
# %2 - VF name
# %3 - component type [VF ]
    GROUP_IS_MISSING: {
        code: 400,
        message: "Error: Invalid Content. The groups '%1' cannot be found under %2 %3.",
        messageId: "SVC4624"
    }
#---------SVC4625------------------------------  
# %1 - groups name
    GROUP_ARTIFACT_ALREADY_ASSOCIATED: {
        code: 400,
        message: "Error: Invalid Content. Artifact already associated to group '%1'.",
        messageId: "SVC4625"
    }
#---------SVC4626------------------------------  
# %1 - groups name
    GROUP_ARTIFACT_ALREADY_DISSOCIATED: {
        code: 400,
        message: "Error: Invalid Content. Artifact already dissociated from group '%1'.",
        messageId: "SVC4626"
    }
#---------SVC4627------------------------------
# %1 - property name
# %2 - group name
# %3 - group type name
    GROUP_PROPERTY_NOT_FOUND: {
        code: 400,
        message: "Error: property %1 listed in group %2 is not exist in group type %3.",
        messageId: "SVC4627"
    }   
#---------SVC4628------------------------------  
# %1 - csarUUID
# %2 - VF name
    VSP_ALREADY_EXISTS: {
        code: 400,
        message: "Error: The VSP with UUID %1 was already imported for VF %2. Please select another or update the existing VF.",
        messageId: "SVC4628"
    }
#---------SVC4629------------------------------  
# %1 - VF name
    MISSING_CSAR_UUID: {
        code: 400,
        message: "Error: The Csar UUID or payload name is missing for VF %1.",
        messageId: "SVC4629"
    }
#---------SVC4630------------------------------  
# %1 - VF name
# %2 - new csarUUID
# %3 - old csarUUID
    RESOURCE_LINKED_TO_DIFFERENT_VSP: {
        code: 400,
        message: "Error: Resource %1 cannot be updated using CsarUUID %2 since the resource is linked to a different VSP with csarUUID %3.",
        messageId: "SVC4630"
    }
#---------SVC4631------------------------------ 
# %1  - policy name 
    POLICY_TYPE_ALREADY_EXIST: {
        code: 409,
        message: "Error: Policy type %1 already exists.",
        messageId: "SVC4631"
    }
#---------SVC4632------------------------------
# %1 - target name
# %2 - policy type name
    TARGETS_NON_VALID: {
        code: 400,
        message: "Error: target %1 listed in policy type %2 is not a group or resource.",
        messageId: "SVC4632"
    }
#---------SVC4633------------------------------
# %1 - policy name
    TARGETS_EMPTY: {
        code: 400,
        message: "Error: Invalid Content. Policy %1 target list was provided but does not have values",
        messageId: "SVC4633"
    }
#---------SVC4634------------------------------
    DATA_TYPE_CANNOT_BE_EMPTY: {
        code: 500,
        message: "Error: Data types are empty. Please import the data types.",
        messageId: "SVC4634"
    }
#---------SVC4635------------------------------
# %1 - csar uuid
    RESOURCE_FROM_CSAR_NOT_FOUND: {
        code: 400,
        message: "Error: resource from csar uuid %1 not found",
        messageId: "SVC4635"
    }