aboutsummaryrefslogtreecommitdiffstats
path: root/sdc-os-chef/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/files/default/FE-rest-configuration.yaml
blob: ecedafea569552e48f27589ba49f9cf20e68ec91 (plain)
1
2
3
4
5
6
7
8
9
10
11
# rest read timeout - means no timeout
readTimeoutInSec: 0

# whether to ignore certificate
ignoreCertificate: false

# the connection pool size
connectionPoolSize: 10

# create connection timeout
connectTimeoutInSec: 10
000 } /* 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 */ }
/*-
 * ============LICENSE_START=======================================================
 * SDC
 * ================================================================================
 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
 * ================================================================================
 * 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.
 * ============LICENSE_END=========================================================
 */

package org.openecomp.sdc.be.tosca;

import java.io.StringReader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.openecomp.sdc.be.datatypes.elements.SchemaDefinition;
import org.openecomp.sdc.be.model.Component;
import org.openecomp.sdc.be.model.DataTypeDefinition;
import org.openecomp.sdc.be.model.PropertyDefinition;
import org.openecomp.sdc.be.model.Resource;
import org.openecomp.sdc.be.model.tosca.ToscaPropertyType;
import org.openecomp.sdc.be.model.tosca.converters.ToscaMapValueConverter;
import org.openecomp.sdc.be.model.tosca.converters.ToscaValueConverter;
import org.openecomp.sdc.be.tosca.model.EntrySchema;
import org.openecomp.sdc.be.tosca.model.ToscaNodeType;
import org.openecomp.sdc.be.tosca.model.ToscaProperty;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.JsonSyntaxException;
import com.google.gson.stream.JsonReader;

import fj.data.Either;

public class PropertyConvertor {
	private static PropertyConvertor instance;
	private JsonParser jsonParser = new JsonParser();
	private static Logger log = LoggerFactory.getLogger(PropertyConvertor.class.getName());

	protected PropertyConvertor() {

	}

	public static synchronized PropertyConvertor getInstance() {
		if (instance == null) {
			instance = new PropertyConvertor();
		}
		return instance;
	}

	public Either<ToscaNodeType, ToscaError> convertProperties(Component component, ToscaNodeType toscaNodeType, Map<String, DataTypeDefinition> dataTypes) {

		if (component instanceof Resource) {
			Resource resource = (Resource) component;
			List<PropertyDefinition> props = resource.getProperties();
			if (props != null) {
				Map<String, ToscaProperty> properties = new HashMap<>();

				// take only the properties of this resource
				props.stream().filter(p -> component.getUniqueId().equals(p.getParentUniqueId())).forEach(property -> {
					ToscaProperty prop = convertProperty(dataTypes, property, false);

					properties.put(property.getName(), prop);

				});
				if (!properties.isEmpty()) {
					toscaNodeType.setProperties(properties);
				}
			}
		}
		return Either.left(toscaNodeType);
	}

	public ToscaProperty convertProperty(Map<String, DataTypeDefinition> dataTypes, PropertyDefinition property, boolean isCapabiltyProperty) {
		ToscaProperty prop = new ToscaProperty();

		String innerType = null;
		SchemaDefinition schema = property.getSchema();
		if (schema != null && schema.getProperty() != null && schema.getProperty().getType() != null && !schema.getProperty().getType().isEmpty()) {
			innerType = schema.getProperty().getType();
			EntrySchema eschema = new EntrySchema();
			eschema.setType(innerType);
			eschema.setDescription(schema.getProperty().getDescription());
			prop.setEntry_schema(eschema);
		}
		log.debug("try to convert property {} from type {} with default value {}", property.getName(), property.getType(), property.getDefaultValue());
		prop.setDefaultp(convertToToscaObject(property.getType(), property.getDefaultValue(), innerType, dataTypes));
		prop.setType(property.getType());
		prop.setDescription(property.getDescription());
		if (isCapabiltyProperty) {
			prop.setStatus(property.getStatus());
			prop.setRequired(property.isRequired());
		}
		return prop;
	}

	public Object convertToToscaObject(String propertyType, String value, String innerType, Map<String, DataTypeDefinition> dataTypes) {
		log.debug("try to convert propertyType {} , value {}, innerType {}", propertyType, value, innerType);
		if (value == null) {
			return value;
		}

		ToscaMapValueConverter mapConverterInst = ToscaMapValueConverter.getInstance();
		ToscaValueConverter innerConverter = null;
		Boolean isScalar = true;

		ToscaPropertyType type = ToscaPropertyType.isValidType(propertyType);
		if (type == null) {
			log.debug("isn't prederfined type, get from all data types");
			DataTypeDefinition dataTypeDefinition = dataTypes.get(propertyType);
			if (innerType == null) {
				innerType = propertyType;
			}

			if ((type = mapConverterInst.isScalarType(dataTypeDefinition)) != null) {
				log.debug("This is scalar type. get suitable converter for type {}", type);
				innerConverter = type.getValueConverter();
			} else {
				isScalar = false;
			}
		} else {
			ToscaPropertyType typeIfScalar = ToscaPropertyType.getTypeIfScalar(type.getType());
			if (typeIfScalar == null) {
				isScalar = false;
			}

			innerConverter = type.getValueConverter();
			if (ToscaPropertyType.STRING.equals(type) && value.startsWith("/")) {
				return innerConverter.convertToToscaValue(value, innerType, dataTypes);
			}
		}
		JsonElement jsonElement = null;
		try {
			StringReader reader = new StringReader(value);
			JsonReader jsonReader = new JsonReader(reader);
			jsonReader.setLenient(true);

			jsonElement = jsonParser.parse(jsonReader);

			if (value.equals("")) {
				return value;
			}

			if (jsonElement.isJsonPrimitive() && isScalar) {
				log.debug("It's well defined type. convert it");
				ToscaValueConverter converter = type.getValueConverter();
				return converter.convertToToscaValue(value, innerType, dataTypes);
			} else {
				log.debug("It's data type or inputs in primitive type. convert as map");
				Object convertedValue;
				if (innerConverter != null && (ToscaPropertyType.MAP.equals(type) || ToscaPropertyType.LIST.equals(type))) {
					convertedValue = innerConverter.convertToToscaValue(value, innerType, dataTypes);
				} else {
					if (isScalar) {
						// complex json for scalar type
						convertedValue = mapConverterInst.handleComplexJsonValue(jsonElement);
					} else {
						if (innerConverter != null) {
							convertedValue = innerConverter.convertToToscaValue(value, innerType, dataTypes);
						} else {
							convertedValue = mapConverterInst.convertDataTypeToToscaMap(innerType, dataTypes, innerConverter, isScalar, jsonElement);
						}
					}
				}
				return convertedValue;
			}

		} catch (JsonSyntaxException e) {
			log.debug("convertToToscaValue failed to parse json value :", e);
			return null;
		}

	}

}