From 4869f2198fea14a1fabe2168f01b10af687e706c Mon Sep 17 00:00:00 2001 From: fpaquett Date: Fri, 12 Oct 2018 12:01:48 -0400 Subject: Updated sparky Updated to Casablanca image and configuration Issue-ID: AAI-1736 Change-Id: I5a2bd265ca7f6d496f06eb78e75597997fbecd04 Signed-off-by: fpaquett --- deploy_vm1.sh | 2 +- docker-compose-app.yml | 16 +- sparky/appconfig/application-camel.properties | 3 - sparky/appconfig/application-fe-prod.properties | 7 - sparky/appconfig/application-http.properties | 1 - .../appconfig/application-oxm-default.properties | 16 +- .../appconfig/application-oxm-override.properties | 16 +- .../application-oxm-schema-prod.properties | 17 +- sparky/appconfig/application-resources.properties | 14 ++ sparky/appconfig/application-ssl.properties | 14 ++ sparky/appconfig/application-sync.properties | 17 +- sparky/appconfig/application.properties | 22 ++- .../camel-rests/sparky-core-filter-aggregation.xml | 7 - .../camel-rests/sparky-core-prepareSchema.xml | 11 -- .../sparky-core-subscriptionService.xml | 7 - .../camel-rests/sparky-core-unified-search.xml | 7 - .../sparky-core-unifiedFilterRequest.xml | 7 - .../descriptors/aaiEntityNodeDescriptors.json | 218 --------------------- sparky/appconfig/filters/aaiui_filters.json | 79 -------- sparky/appconfig/filters/aaiui_views.json | 21 -- .../subscription_object_inspector_mapping.json | 16 -- sparky/appconfig/portal/roles.config | 6 - sparky/appconfig/roles.config | 6 + 23 files changed, 124 insertions(+), 406 deletions(-) delete mode 100644 sparky/appconfig/application-camel.properties delete mode 100644 sparky/appconfig/application-fe-prod.properties delete mode 100644 sparky/appconfig/application-http.properties delete mode 100644 sparky/appconfig/camel-rests/sparky-core-filter-aggregation.xml delete mode 100644 sparky/appconfig/camel-rests/sparky-core-prepareSchema.xml delete mode 100644 sparky/appconfig/camel-rests/sparky-core-subscriptionService.xml delete mode 100644 sparky/appconfig/camel-rests/sparky-core-unified-search.xml delete mode 100644 sparky/appconfig/camel-rests/sparky-core-unifiedFilterRequest.xml delete mode 100644 sparky/appconfig/descriptors/aaiEntityNodeDescriptors.json delete mode 100644 sparky/appconfig/filters/aaiui_filters.json delete mode 100644 sparky/appconfig/filters/aaiui_views.json delete mode 100644 sparky/appconfig/filters/subscription_object_inspector_mapping.json delete mode 100644 sparky/appconfig/portal/roles.config create mode 100644 sparky/appconfig/roles.config diff --git a/deploy_vm1.sh b/deploy_vm1.sh index 4e55d62..2670d6e 100755 --- a/deploy_vm1.sh +++ b/deploy_vm1.sh @@ -103,7 +103,7 @@ GRAPHADMIN_DOCKER_IMAGE_VERSION=1.0-STAGING-latest SEARCH_DATA_SERVICE_DOCKER_IMAGE_VERSION=1.3-STAGING-latest DATA_ROUTER_DOCKER_IMAGE_VERSION=1.3-STAGING-latest MODEL_LOADER_DOCKER_IMAGE_VERSION=1.3-STAGING-latest -SPARKY_BE_DOCKER_IMAGE_VERSION=1.2.1 +SPARKY_BE_DOCKER_IMAGE_VERSION=1.3-STAGING-latest CHAMP_DOCKER_IMAGE_VERSION=1.3-STAGING-latest GIZMO_DOCKER_IMAGE_VERSION=1.3-STAGING-latest SPIKE_DOCKER_IMAGE_VERSION=1.0-STAGING-latest diff --git a/docker-compose-app.yml b/docker-compose-app.yml index fd5c7b9..13bcac7 100644 --- a/docker-compose-app.yml +++ b/docker-compose-app.yml @@ -160,14 +160,18 @@ services: hostname: sparky-be volumes: - ${UI_LOGS}:/logs - - /opt/test-config/sparky/appconfig:/opt/app/sparky/config + - /opt/test-config/sparky/appconfig/auth:/opt/app/sparky/config/auth + - /opt/test-config/sparky/appconfig/portal:/opt/app/sparky/config/portal + - /opt/test-config/sparky/appconfig/application.properties:/opt/app/sparky/config/application.properties + - /opt/test-config/sparky/appconfig/application-oxm-default.properties:/opt/app/sparky/config/application-oxm-default.properties + - /opt/test-config/sparky/appconfig/application-oxm-schema-prod.properties:/opt/app/sparky/config/application-oxm-schema-prod.properties + - /opt/test-config/sparky/appconfig/application-resources.properties:/opt/app/sparky/config/application-resources.properties + - /opt/test-config/sparky/appconfig/application-ssl.properties:/opt/app/sparky/config/application-ssl.properties + - /opt/test-config/sparky/appconfig/users.config:/opt/app/sparky/config/users.config + - /opt/test-config/sparky/appconfig/roles.config:/opt/app/sparky/config/roles.config + ports: - 9517:9517 - environment: - - KEYSTORE_PASSWORD=OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10 - - KEYSTORE_ALIAS_PASSWORD=OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10 - - SPARKY_SSL_ENABLED=false - - SPARKY_PORTAL_ENABLED=true logging: driver: "json-file" options: diff --git a/sparky/appconfig/application-camel.properties b/sparky/appconfig/application-camel.properties deleted file mode 100644 index 9cd68cb..0000000 --- a/sparky/appconfig/application-camel.properties +++ /dev/null @@ -1,3 +0,0 @@ -camel.springboot.name = SparkyCamelContext -#camel.springboot.xmlRests = file:${CONFIG_HOME}/camel-rests/*.xml -camel.component.servlet.mapping.context-path=/rest/* \ No newline at end of file diff --git a/sparky/appconfig/application-fe-prod.properties b/sparky/appconfig/application-fe-prod.properties deleted file mode 100644 index 608c829..0000000 --- a/sparky/appconfig/application-fe-prod.properties +++ /dev/null @@ -1,7 +0,0 @@ - -server.servlet.context-path=/services/aai/webapp/ - -# -# attempt to externalize ui JS classes + resources -# -spring.resources.static-locations=file:${APP_HOME}/static/ \ No newline at end of file diff --git a/sparky/appconfig/application-http.properties b/sparky/appconfig/application-http.properties deleted file mode 100644 index f81a597..0000000 --- a/sparky/appconfig/application-http.properties +++ /dev/null @@ -1 +0,0 @@ -server.port = 9517 \ No newline at end of file diff --git a/sparky/appconfig/application-oxm-default.properties b/sparky/appconfig/application-oxm-default.properties index afa0aaa..0f3b825 100644 --- a/sparky/appconfig/application-oxm-default.properties +++ b/sparky/appconfig/application-oxm-default.properties @@ -1,2 +1,16 @@ +# Copyright © 2018 Amdocs, AT&T +# +# 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. + oxm.apiVersion=v14 -oxm.apiVersionList=v8,v9,v10,v11,v12,v13,v14 \ No newline at end of file +oxm.apiVersionList=v8,v9,v10,v11,v12,v13,v14 diff --git a/sparky/appconfig/application-oxm-override.properties b/sparky/appconfig/application-oxm-override.properties index afa0aaa..0f3b825 100644 --- a/sparky/appconfig/application-oxm-override.properties +++ b/sparky/appconfig/application-oxm-override.properties @@ -1,2 +1,16 @@ +# Copyright © 2018 Amdocs, AT&T +# +# 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. + oxm.apiVersion=v14 -oxm.apiVersionList=v8,v9,v10,v11,v12,v13,v14 \ No newline at end of file +oxm.apiVersionList=v8,v9,v10,v11,v12,v13,v14 diff --git a/sparky/appconfig/application-oxm-schema-prod.properties b/sparky/appconfig/application-oxm-schema-prod.properties index 24db5ef..2f5b30c 100644 --- a/sparky/appconfig/application-oxm-schema-prod.properties +++ b/sparky/appconfig/application-oxm-schema-prod.properties @@ -1 +1,16 @@ -oxm.schemaNodeDir=/opt/app/sparky/onap/oxm \ No newline at end of file +# Copyright © 2018 Amdocs, AT&T +# +# 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. + +oxm.schemaNodeDir=/opt/app/sparky/onap/oxm + diff --git a/sparky/appconfig/application-resources.properties b/sparky/appconfig/application-resources.properties index 716a557..6b5fa19 100644 --- a/sparky/appconfig/application-resources.properties +++ b/sparky/appconfig/application-resources.properties @@ -1,3 +1,17 @@ +# Copyright © 2018 Amdocs, AT&T +# +# 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. + resources.hostname=aai.api.simpledemo.openecomp.org resources.port=8443 resources.authType=SSL_BASIC diff --git a/sparky/appconfig/application-ssl.properties b/sparky/appconfig/application-ssl.properties index ba0a8db..1f98b6b 100644 --- a/sparky/appconfig/application-ssl.properties +++ b/sparky/appconfig/application-ssl.properties @@ -1,3 +1,17 @@ +# Copyright © 2018 Amdocs, AT&T +# +# 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. + server.port = 8000 server.ssl.key-store=file:${CONFIG_HOME}/auth/tomcat_keystore server.ssl.key-store-password=OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10 diff --git a/sparky/appconfig/application-sync.properties b/sparky/appconfig/application-sync.properties index 836ab80..c3119a4 100644 --- a/sparky/appconfig/application-sync.properties +++ b/sparky/appconfig/application-sync.properties @@ -1,6 +1,21 @@ +# Copyright © 2018 Amdocs, AT&T +# +# 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. + + aggregationSyncEnabled=true historicalEntitySyncEnabled=true autoSuggestSyncEnabled=true vnfAliasSyncEnabled=true geoSyncEnabled=true -viewInspectSyncEnabled=true \ No newline at end of file +viewInspectSyncEnabled=true diff --git a/sparky/appconfig/application.properties b/sparky/appconfig/application.properties index a0af547..cd28d02 100644 --- a/sparky/appconfig/application.properties +++ b/sparky/appconfig/application.properties @@ -1,3 +1,18 @@ +# Copyright © 2018 Amdocs, AT&T +# +# 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. + + # # disable the default thyme leaf icon on web-pages # @@ -8,13 +23,10 @@ spring.mvc.favicon.enabled=false # and in the values.yaml change the internalPort to 9517 # -spring.profiles.active=camel,http,fe-prod,oxm-schema-prod,oxm-default,resources,sync - -elasticsearch.hostname=aai.elasticsearch.simpledemo.openecomp.org -elasticsearch.port=9200 +spring.profiles.active=camel,http,fe-prod,oxm-schema-prod,oxm-default,resources,sync,portal searchservice.hostname=aai.searchservice.simpledemo.openecomp.org searchservice.port=9509 searchservice.client-cert=client-cert-onap.p12 -searchservice.client-cert-password=OBF:1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10 +searchservice.client-cert-password=1y0q1uvc1uum1uvg1pil1pjl1uuq1uvk1uuu1y10 searchservice.truststore=tomcat_keystore diff --git a/sparky/appconfig/camel-rests/sparky-core-filter-aggregation.xml b/sparky/appconfig/camel-rests/sparky-core-filter-aggregation.xml deleted file mode 100644 index e4e02ba..0000000 --- a/sparky/appconfig/camel-rests/sparky-core-filter-aggregation.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/sparky/appconfig/camel-rests/sparky-core-prepareSchema.xml b/sparky/appconfig/camel-rests/sparky-core-prepareSchema.xml deleted file mode 100644 index 20dba6f..0000000 --- a/sparky/appconfig/camel-rests/sparky-core-prepareSchema.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/sparky/appconfig/camel-rests/sparky-core-subscriptionService.xml b/sparky/appconfig/camel-rests/sparky-core-subscriptionService.xml deleted file mode 100644 index f6a2953..0000000 --- a/sparky/appconfig/camel-rests/sparky-core-subscriptionService.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/sparky/appconfig/camel-rests/sparky-core-unified-search.xml b/sparky/appconfig/camel-rests/sparky-core-unified-search.xml deleted file mode 100644 index 61fd9ad..0000000 --- a/sparky/appconfig/camel-rests/sparky-core-unified-search.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/sparky/appconfig/camel-rests/sparky-core-unifiedFilterRequest.xml b/sparky/appconfig/camel-rests/sparky-core-unifiedFilterRequest.xml deleted file mode 100644 index 1b975e9..0000000 --- a/sparky/appconfig/camel-rests/sparky-core-unifiedFilterRequest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/sparky/appconfig/descriptors/aaiEntityNodeDescriptors.json b/sparky/appconfig/descriptors/aaiEntityNodeDescriptors.json deleted file mode 100644 index e72bab0..0000000 --- a/sparky/appconfig/descriptors/aaiEntityNodeDescriptors.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "generalNodeClass": { - "class": "aai-entity-node general-node", - "visualElements": [{ - "type": "circle", - "class": "outer", - "svgAttributes": { - "r": "16" - } - }, - { - "type": "circle", - "class": "inner", - "svgAttributes": { - "r": "10" - } - }, - { - "type": "text", - "class": "id-type-label", - "displayKey": "itemType", - "shapeAttributes": { - "offset": { - "x": "0", - "y": "33" - } - } - }, - { - "type": "text", - "class": "id-value-label", - "displayKey": "itemNameValue", - "shapeAttributes": { - "offset": { - "x": "0", - "y": "48" - } - } - }] - }, - "searchedNodeClass": { - "class": "aai-entity-node search-node", - "visualElements": [{ - "type": "circle", - "class": "outer", - "svgAttributes": { - "r": "16" - } - }, - { - "type": "circle", - "class": "inner", - "svgAttributes": { - "r": "10" - } - }, - { - "type": "text", - "class": "id-type-label", - "displayKey": "itemType", - "shapeAttributes": { - "offset": { - "x": "0", - "y": "33" - } - } - }, - { - "type": "text", - "class": "id-value-label", - "displayKey": "itemNameValue", - "shapeAttributes": { - "offset": { - "x": "0", - "y": "48" - } - } - }] - }, - "selectedSearchedNodeClass": { - "class": "aai-entity-node selected-search-node", - "visualElements": [{ - "type": "circle", - "class": "outer", - "svgAttributes": { - "r": "31" - } - }, - { - "type": "circle", - "class": "inner", - "svgAttributes": { - "r": "20" - } - }, - { - "type": "text", - "class": "id-type-label", - "displayKey": "itemType", - "shapeAttributes": { - "offset": { - "x": "0", - "y": "48" - } - } - }, - { - "type": "text", - "class": "id-value-label", - "displayKey": "itemNameValue", - "shapeAttributes": { - "offset": { - "x": "0", - "y": "63" - } - } - }, - { - "type": "button", - "name": "icon_ellipses", - "class": "node-button", - "shapeAttributes": { - "offset": { - "x": "33", - "y": "-35" - } - }, - "svgAttributes": { - "className": "node-button", - "r": "10" - } - }, - { - "type": "button", - "name": "icon_triangle_warning", - "class": "node-button", - "shapeAttributes": { - "offset": { - "x": "46", - "y": "-12" - } - }, - "svgAttributes": { - "className": "node-button", - "r": "10" - } - }] - }, - "selectedNodeClass": { - "class": "aai-entity-node selected-node", - "visualElements": [{ - "type": "circle", - "class": "outer", - "svgAttributes": { - "r": "31" - } - }, - { - "type": "circle", - "class": "inner", - "svgAttributes": { - "r": "20" - } - }, - { - "type": "text", - "class": "id-type-label", - "displayKey": "itemType", - "shapeAttributes": { - "offset": { - "x": "0", - "y": "48" - } - } - }, - { - "type": "text", - "class": "id-value-label", - "displayKey": "itemNameValue", - "shapeAttributes": { - "offset": { - "x": "0", - "y": "63" - } - } - }, - { - "type": "button", - "name": "icon_ellipses", - "class": "node-button", - "shapeAttributes": { - "offset": { - "x": "33", - "y": "-35" - } - }, - "svgAttributes": { - "className": "node-button", - "r": "10" - } - }, - { - "type": "button", - "name": "icon_triangle_warning", - "class": "node-button", - "shapeAttributes": { - "offset": { - "x": "46", - "y": "-12" - } - }, - "svgAttributes": { - "className": "node-button", - "r": "10" - } - }] - } -} \ No newline at end of file diff --git a/sparky/appconfig/filters/aaiui_filters.json b/sparky/appconfig/filters/aaiui_filters.json deleted file mode 100644 index 62b6811..0000000 --- a/sparky/appconfig/filters/aaiui_filters.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "filters": [ - { - "filterId": "1", - "filterName": "Orchestration-Status", - "displayName": "Orchestration Status", - "dataType": "dropDown", - "multiSelect": "false", - "watermark": "Any Orchestration Status", - "optionsType": "options", - "dataSource": { - "indexName": "aggregate_generic-vnf_index", - "docType": "default", - "fieldName": "orchestration-status" - } - }, - { - "filterId": "2", - "filterName": "Prov-Status", - "displayName": "Provisioning Status", - "dataType": "dropDown", - "multiSelect": "false", - "watermark": "Any Provisioning Status", - "optionsType": "options", - "dataSource": { - "indexName": "aggregate_generic-vnf_index", - "docType": "default", - "fieldName": "prov-status" - } - }, - { - "filterId": "5", - "filterName": "Date", - "displayName": "Date", - "dataType": "date", - "multiSelect": "false", - "watermark": "Choose Date Range", - "defaultValue" : {"decode": "Today", "code": "last_0_hours"}, - "optionsType": "dynamicOptions", - "optionsValues": [ - {"decode": "Today", "code": "last_0_hours"}, - {"decode": "Since Yesterday", "code": "last_1_days"}, - {"decode": "Since Last Week", "code": "last_1_weeks"}, - {"decode": "Since Last Month", "code": "last_1_months"}, - {"decode": "Since Last Year", "code": "last_1_years"}, - {"decode": "Custom Range", "code": "custom_range"} - ] - }, - { - "filterId": "7", - "filterName": "NF-Type", - "displayName": "Network Function Type", - "dataType": "dropDown", - "multiSelect": "false", - "watermark": "Any Network Function Type", - "optionsType": "options", - "dataSource": { - "indexName": "aggregate_generic-vnf_index", - "docType": "default", - "fieldName": "nf-type" - } - }, - { - "filterId": "8", - "filterName": "NF-Role", - "displayName": "Network Function Role", - "dataType": "dropDown", - "multiSelect": "false", - "watermark": "Any Network Function Role", - "optionsType": "options", - "dataSource": { - "indexName": "aggregate_generic-vnf_index", - "docType": "default", - "fieldName": "nf-role" - } - } - - ] -} \ No newline at end of file diff --git a/sparky/appconfig/filters/aaiui_views.json b/sparky/appconfig/filters/aaiui_views.json deleted file mode 100644 index 9ca0119..0000000 --- a/sparky/appconfig/filters/aaiui_views.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "views": [ - { - "viewName" : "vnfSearch", - "filters" : [ - { - "filterId": "1" - }, - { - "filterId": "2" - }, - { - "filterId": "7" - }, - { - "filterId": "8" - } - ] - } - ] -} \ No newline at end of file diff --git a/sparky/appconfig/filters/subscription_object_inspector_mapping.json b/sparky/appconfig/filters/subscription_object_inspector_mapping.json deleted file mode 100644 index ad2ab7a..0000000 --- a/sparky/appconfig/filters/subscription_object_inspector_mapping.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "target": "", - "origin": "", - "messageType": "", - "topic": "", - "message": { - "applicationName": "", - "payload": { - "action": "", - "params": { - "objectName": "", - "externalClassId": "" - } - } - } -} diff --git a/sparky/appconfig/portal/roles.config b/sparky/appconfig/portal/roles.config deleted file mode 100644 index 4d5d43e..0000000 --- a/sparky/appconfig/portal/roles.config +++ /dev/null @@ -1,6 +0,0 @@ -[ - { - "id":1, - "name":"View" - } -] \ No newline at end of file diff --git a/sparky/appconfig/roles.config b/sparky/appconfig/roles.config new file mode 100644 index 0000000..b7894d8 --- /dev/null +++ b/sparky/appconfig/roles.config @@ -0,0 +1,6 @@ +[ + { + "id":1, + "name":"View" + } +] -- cgit 1.2.3-korg