logs/*.log
*.pyc
*.swp
-
+*_target/
+*.orig
# Test related files
multivimbroker/.coverage
host=gerrit.onap.org
port=29418
project=multicloud/framework
+defaultbranch=master
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
-version: 2
-
-formats:
- - htmlzip
+version: 2
build:
- image: latest
+ os: ubuntu-20.04
+ tools:
+ python: "3.8"
python:
- version: 3.7
install:
- - requirements: docs/requirements-docs.txt
+ - requirements: docs/requirements-docs.txt
sphinx:
configuration: docs/conf.py
id: 'ewmulta'
timezone: 'America/Los_Angeles'
- name: 'Xinhui Li'
- email: 'lxinhui@vmware.com'
+ email: 'xinhui.li@salesforce.com'
id: 'xinhuili'
- company: 'VMware'
+ company: 'Salesforce'
timezone: 'Asia/Shanghai'
- name: 'Huang Haibin'
email: 'haibin.huang@intel.com'
id: 'haibin'
timezone: 'Asia/Shanghai'
- name: 'Xiaohua Zhang'
- email: 'Xiaohua.Zhang@windriver.com'
- company: 'Wind River'
+ email: 'xiaohua.zhang@163.com'
+ company: 'China Mobile'
id: 'Xiaohua626'
timezone: 'Asia/Shanghai'
- name: 'Ritu Sood'
company: 'Intel'
id: 'ritusood'
timezone: 'America/Los_Angeles'
- - name: 'Liexiang Yue'
- email: 'yueliexiang@chinamobile.com'
- company: 'China Mobile'
- id: 'YueLiexiang'
- timezone: 'Asia/Shanghai'
+ - name: 'Konrad Banka'
+ email: 'k.banka@samsung.com'
+ company: 'Samsung'
+ id: 'kbanka'
+ timezone: 'Europe/Paris'
tsc:
approval: 'https://lists.onap.org/pipermail/onap-tsc'
changes:
- 'Ethan Lynn'
- 'Sudhakar Reddy'
link: 'https://lists.onap.org/g/onap-tsc/message/6676'
+ - type: 'Remove'
+ name:
+ - 'Liexiang Yue'
+ link: 'https://lists.onap.org/g/onap-tsc/message/7962'
+ - type: 'Addition'
+ name:
+ - 'Konrad Banka'
+ link: 'https://lists.onap.org/g/onap-tsc/message/7962'
<parent>
<groupId>org.onap.multicloud.framework</groupId>
<artifactId>multicloud-framework-artifactbroker</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.9.1-SNAPSHOT</version>
</parent>
<artifactId>multicloud-framework-artifactbroker-forwarding</artifactId>
<dependency>
<groupId>org.onap.sdc.sdc-distribution-client</groupId>
<artifactId>sdc-distribution-client</artifactId>
- <version>1.3.0</version>
- <exclusions>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </exclusion>
- </exclusions>
</dependency>
</dependencies>
</project>
<parent>
<groupId>org.onap.multicloud.framework</groupId>
<artifactId>multicloud-framework-artifactbroker</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.9.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>multicloud-framework-artifactbroker-main</artifactId>
<parent>
<groupId>org.onap.multicloud.framework</groupId>
<artifactId>multicloud-framework-artifactbroker</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.9.1-SNAPSHOT</version>
</parent>
<artifactId>multicloud-framework-artifactbroker-model</artifactId>
<dependency>
<groupId>org.onap.sdc.sdc-distribution-client</groupId>
<artifactId>sdc-distribution-client</artifactId>
- <version>1.3.0</version>
- <exclusions>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </exclusion>
- </exclusions>
</dependency>
</dependencies>
</project>
-FROM adoptopenjdk/openjdk11:jre-11.0.8_10-alpine
+FROM nexus3.onap.org:10001/onap/integration-java11:9.0.0
ARG HTTP_PROXY=${HTTP_PROXY}
ARG HTTPS_PROXY=${HTTPS_PROXY}
ENV ARTIFACT_HOME=/opt/app/
ENV ARTIFACT_DISTRIBUTION_HOME=${ARTIFACT_HOME}/distribution
-EXPOSE 9014
+USER root
-RUN apk add --no-cache --update busybox-extras bash nss procps coreutils findutils grep zip unzip \
- curl wget openssh maven jq httpie py-pip
+EXPOSE 9014
-RUN addgroup -S onap && \
- adduser -S --shell /bin/bash -G onap onap
+RUN apk add --no-cache mlocate zip unzip jq procps \
+ curl openssh
RUN mkdir -p ${ARTIFACT_DISTRIBUTION_HOME} ${ARTIFACT_LOGS} ${ARTIFACT_HOME}/etc/ssl && \
chown -R onap:onap ${ARTIFACT_HOME} ${ARTIFACT_DISTRIBUTION_HOME} ${ARTIFACT_LOGS}
RUN unzip -q -o -B multicloud-framework-artifactbroker.zip && \
rm -f multicloud-framework-artifactbroker.zip
COPY artifact-dist.sh bin/.
-#RUN tar xvfz /packages/policy-distribution.tar.gz --directory ${ARTIFACT_DISTRIBUTION_HOME}
-#RUN rm /packages/policy-distribution.tar.gz
RUN chmod +x bin/*.sh && \
cp ${ARTIFACT_DISTRIBUTION_HOME}/etc/ssl/* ${ARTIFACT_HOME}/etc/ssl && \
chown onap:onap ${ARTIFACT_HOME}/etc/ssl/*
+RUN updatedb
+
USER onap
+
WORKDIR ${ARTIFACT_DISTRIBUTION_HOME}/bin
-ENTRYPOINT [ "bash", "./artifact-dist.sh" ]
+ENTRYPOINT [ "sh", "./artifact-dist.sh" ]
-#!/bin/bash
+#!/bin/sh
#
# ============LICENSE_START=======================================================
# Copyright (C) 2018 Ericsson. All rights reserved.
BUILD_ARGS="--no-cache"
ORG="onap"
-VERSION="1.6.0-SNAPSHOT"
-STAGING_VERSION="1.6.0-STAGING"
+VERSION="1.9.1-SNAPSHOT"
+STAGING_VERSION="1.9.1-STAGING"
PROJECT="multicloud"
IMAGE="framework-artifactbroker"
DOCKER_REPOSITORY="nexus3.onap.org:10003"
<parent>
<groupId>org.onap.multicloud.framework</groupId>
<artifactId>multicloud-framework-artifactbroker</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.9.1-SNAPSHOT</version>
</parent>
<artifactId>multicloud-framework-artifactbroker-package</artifactId>
"sdcConfiguration":{
"parameterClassName":"org.onap.policy.distribution.reception.handling.sdc.SdcReceptionHandlerConfigurationParameterGroup",
"parameters":{
- "asdcAddress": "sdc-be.onap:8443",
- "messageBusAddress": [
- "message-router.onap"
- ],
+ "sdcAddress": "sdc-be.onap:8443",
"user": "policy",
"password": "Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U",
"pollingInterval":20,
"keystorePassword": "null",
"activeserverTlsAuth": false,
"isFilterinEmptyResources": true,
- "isUseHttpsWithDmaap": false
+ "isUseHttpsWithSDC": true,
+ "httpsproxyHost": "null",
+ "httpproxyHost": "null",
+ "httpsproxyPort": 8181,
+ "httpproxyPort": 8080
}
}
},
<parent>
<groupId>org.onap.multicloud.framework</groupId>
<artifactId>multicloud-framework-artifactbroker-plugins</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.9.1-SNAPSHOT</version>
</parent>
<artifactId>multicloud-framework-artifactbroker-forwarding-plugins</artifactId>
Map<String, Object> map = new LinkedHashMap<String, Object>();
map.put("rb-name", vfModule.getVfModuleModelInvariantUUID());
- map.put("rb-version", vfModule.getVfModuleModelUUID());
+ map.put("rb-version", vfModule.getVfModuleModelCustomizationUUID());
map.put("descritpion",vfModule.getVfModuleModelDescription());
Map<String, String> labelMap = new LinkedHashMap<String, String>();
- labelMap.put("vnf_customization_uuid",vfModule.getVfModuleModelCustomizationUUID());
+ labelMap.put("vf_module_model_uuid",vfModule.getVfModuleModelUUID());
+ labelMap.put("vf_module_model_name",vfModule.getVfModuleModelName());
map.put("labels", labelMap);
String json = gson.toJson(map);
private boolean uploadArtifact(VfModuleModel vfModule) {
String url = BASE_PATH + "/" + vfModule.getVfModuleModelInvariantUUID() + "/"
- + vfModule.getVfModuleModelUUID() + "/content";
+ + vfModule.getVfModuleModelCustomizationUUID() + "/content";
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader("content-type", "application/x-www-form-urlencoded;charset=utf-8");
<parent>
<groupId>org.onap.multicloud.framework</groupId>
<artifactId>multicloud-framework-artifactbroker</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.9.1-SNAPSHOT</version>
</parent>
<artifactId>multicloud-framework-artifactbroker-plugins</artifactId>
<parent>
<groupId>org.onap.multicloud.framework</groupId>
<artifactId>multicloud-framework-artifactbroker-plugins</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.9.1-SNAPSHOT</version>
</parent>
<artifactId>multicloud-framework-artifactbroker-reception-plugins</artifactId>
<dependency>
<groupId>org.onap.sdc.sdc-distribution-client</groupId>
<artifactId>sdc-distribution-client</artifactId>
- <version>1.3.0</version>
- <exclusions>
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </exclusion>
- </exclusions>
</dependency>
</dependencies>
</project>
}
@Override
- public String getAsdcAddress() {
- return configParameters.getAsdcAddress();
- }
-
- @Override
- public List<String> getMsgBusAddress() {
- return configParameters.getMessageBusAddress();
+ public String getSdcAddress() {
+ return configParameters.getSdcAddress();
}
@Override
}
@Override
- public Boolean isUseHttpsWithDmaap() {
- return configParameters.isUseHttpsWithDmaap();
+ public Boolean isUseHttpsWithSDC() {
+ return configParameters.isUseHttpsWithSDC();
+ }
+
+ @Override
+ public int getHttpsProxyPort() {
+ return configParameters.getHttpsProxyPort();
+ }
+
+ @Override
+ public String getHttpsProxyHost() {
+ return configParameters.getHttpsProxyHost();
+ }
+
+ @Override
+ public String getHttpProxyHost() {
+ return configParameters.getHttpProxyHost();
+ }
+
+ @Override
+ public int getHttpProxyPort() {
+ return configParameters.getHttpProxyPort();
}
}
private boolean activeserverTlsAuth;
private boolean filterinEmptyResources;
- private boolean useHttpsWithDmaap;
+ private boolean useHttpsWithSDC;
private int pollingTimeout;
private int pollingInterval;
private String user;
private String password;
private String consumerId;
private String consumerGroup;
- private String asdcAddress;
+ private String sdcAddress;
private String environmentName;
private String keystorePath;
private String keystorePassword;
- private List<String> messageBusAddress;
+ private int httpsproxyPort;
+ private int httpproxyPort;
+ private String httpsproxyHost;
+ private String httpproxyHost;
private List<String> artifactTypes;
private int retryDelay;
return this;
}
- /**
- * Set useHttpsWithDmaap to this {@link SdcReceptionHandlerConfigurationParameterBuilder} instance.
- *
- * @param useHttpsWithDmaap the useHttpsWithDmaap
- */
- public SdcReceptionHandlerConfigurationParameterBuilder setUseHttpsWithDmaap(final Boolean useHttpsWithDmaap) {
- this.useHttpsWithDmaap = useHttpsWithDmaap;
- return this;
- }
-
/**
* Set pollingInterval to this {@link SdcReceptionHandlerConfigurationParameterBuilder} instance.
*
}
/**
- * Set asdcAddress to this {@link SdcReceptionHandlerConfigurationParameterBuilder} instance.
+ * Set sdcAddress to this {@link SdcReceptionHandlerConfigurationParameterBuilder} instance.
*
- * @param asdcAddress the asdcAddress
+ * @param sdcAddress the sdcAddress
*/
- public SdcReceptionHandlerConfigurationParameterBuilder setAsdcAddress(final String asdcAddress) {
- this.asdcAddress = asdcAddress;
+ public SdcReceptionHandlerConfigurationParameterBuilder setSdcAddress(final String sdcAddress) {
+ this.sdcAddress = sdcAddress;
return this;
}
return this;
}
- /**
- * Set messageBusAddress to this {@link SdcReceptionHandlerConfigurationParameterBuilder} instance.
- *
- * @param messageBusAddress the messageBusAddress
- */
- public SdcReceptionHandlerConfigurationParameterBuilder setMessageBusAddress(final List<String> messageBusAddress) {
- this.messageBusAddress = messageBusAddress;
- return this;
- }
-
/**
* Set artifactTypes to this {@link SdcReceptionHandlerConfigurationParameterBuilder} instance.
*
}
/**
- * Returns the isUseHttpsWithDmaap flag of this {@link SdcReceptionHandlerConfigurationParameterBuilder} instance.
+ * Returns the isUseHttpsWithSDC flag of this {@link SdcReceptionHandlerConfigurationParameterBuilder} instance.
*
- * @return the isUseHttpsWithDmaap
+ * @return the isUseHttpsWithSDC
*/
- public Boolean getIsUseHttpsWithDmaap() {
- return useHttpsWithDmaap;
+ public Boolean getIsUseHttpsWithSDC() {
+ return useHttpsWithSDC;
}
/**
/**
* Returns the asdc address of this {@link SdcReceptionHandlerConfigurationParameterBuilder} instance.
*
- * @return the asdcAddress
+ * @return the sdcAddress
*/
- public String getAsdcAddress() {
- return asdcAddress;
+ public String getSdcAddress() {
+ return sdcAddress;
}
/**
return keystorePassword;
}
- /**
- * Returns the message bus address of this {@link SdcReceptionHandlerConfigurationParameterBuilder} instance.
- *
- * @return the messageBusAddress
- */
- public List<String> getMessageBusAddress() {
- return messageBusAddress;
- }
-
/**
* Returns the artifact types of this {@link SdcReceptionHandlerConfigurationParameterBuilder} instance.
*
public int getRetryDelay() {
return retryDelay;
}
-
+ /**
+ * Returns the https proxy port of this {@link SdcReceptionHandlerConfigurationParameterBuilder} instance.
+ *
+ * @return the httpsproxyPort
+ */
+ public int getHttpsProxyPort() {
+ return httpsproxyPort;
+ }
+ /**
+ * Returns the https proxy host of this {@link SdcReceptionHandlerConfigurationParameterBuilder} instance.
+ *
+ * @return the httpsproxyHost
+ */
+ public String getHttpsProxyHost() {
+ return httpsproxyHost;
+ }
+ /**
+ * Returns the http proxy port of this {@link SdcReceptionHandlerConfigurationParameterBuilder} instance.
+ *
+ * @return the httpproxyPort
+ */
+ public int getHttpProxyPort() {
+ return httpproxyPort;
+ }
+ /**
+ * Returns the http proxy host of this {@link SdcReceptionHandlerConfigurationParameterBuilder} instance.
+ *
+ * @return the httpsproxyHost
+ */
+ public String getHttpProxyHost() {
+ return httpproxyHost;
+ }
}
*/
public class SdcReceptionHandlerConfigurationParameterGroup extends ReceptionHandlerConfigurationParameterGroup {
- private String asdcAddress;
- private List<String> messageBusAddress;
- private String user;
- private String password;
- private int pollingInterval;
- private int pollingTimeout;
- private int retryDelay;
- private String consumerId;
- private List<String> artifactTypes;
- private String consumerGroup;
- private String environmentName;
- private String keyStorePath;
- private String keyStorePassword;
- private boolean activeServerTlsAuth;
- private boolean isFilterInEmptyResources;
- private boolean isUseHttpsWithDmaap;
+ private final String sdcAddress;
+ private final String user;
+ private final String password;
+ private final int pollingInterval;
+ private final int pollingTimeout;
+ private final int retryDelay;
+ private final int httpsProxyPort;
+ private final int httpProxyPort;
+ private final String httpsProxyHost;
+ private final String httpProxyHost;
+ private final String consumerId;
+ private final List<String> artifactTypes;
+ private final String consumerGroup;
+ private final String environmentName;
+ private final String keyStorePath;
+ private final String keyStorePassword;
+ private final boolean activeServerTlsAuth;
+ private final boolean isFilterInEmptyResources;
+ private final boolean isUseHttpsWithSDC;
/**
* The constructor for instantiating {@link SdcReceptionHandlerConfigurationParameterGroup} class.
*/
public SdcReceptionHandlerConfigurationParameterGroup(
final SdcReceptionHandlerConfigurationParameterBuilder builder) {
- asdcAddress = builder.getAsdcAddress();
- messageBusAddress = builder.getMessageBusAddress();
+ sdcAddress = builder.getSdcAddress();
user = builder.getUser();
password = builder.getPassword();
pollingInterval = builder.getPollingInterval();
pollingTimeout = builder.getPollingTimeout();
retryDelay = builder.getRetryDelay();
+ httpsProxyPort = builder.getHttpsProxyPort();
+ httpsProxyHost = builder.getHttpsProxyHost();
+ httpProxyPort = builder.getHttpProxyPort();
+ httpProxyHost = builder.getHttpProxyHost();
consumerId = builder.getConsumerId();
artifactTypes = builder.getArtifactTypes();
consumerGroup = builder.getConsumerGroup();
keyStorePassword = builder.getKeystorePassword();
activeServerTlsAuth = builder.isActiveserverTlsAuth();
isFilterInEmptyResources = builder.isFilterinEmptyResources();
- isUseHttpsWithDmaap = builder.getIsUseHttpsWithDmaap();
+ isUseHttpsWithSDC = builder.getIsUseHttpsWithSDC();
}
- public String getAsdcAddress() {
- return asdcAddress;
- }
-
- public List<String> getMessageBusAddress() {
- return messageBusAddress;
+ public String getSdcAddress() {
+ return sdcAddress;
}
public String getUser() {
return isFilterInEmptyResources;
}
- public boolean isUseHttpsWithDmaap() {
- return isUseHttpsWithDmaap;
+ public boolean isUseHttpsWithSDC() {
+ return isUseHttpsWithSDC;
+ }
+
+ public int getHttpsProxyPort() {
+ return httpsProxyPort;
+ }
+
+ public String getHttpsProxyHost() {
+ return httpsProxyHost;
+ }
+
+ public int getHttpProxyPort() {
+ return httpProxyPort;
+ }
+
+ public String getHttpProxyHost() {
+ return httpProxyHost;
}
/**
@Override
public GroupValidationResult validate() {
final GroupValidationResult validationResult = new GroupValidationResult(this);
- validateStringElement(validationResult, asdcAddress, "asdcAddress");
+ validateStringElement(validationResult, sdcAddress, "sdcAddress");
validateStringElement(validationResult, user, "user");
validateStringElement(validationResult, consumerId, "consumerId");
validateStringElement(validationResult, consumerGroup, "consumerGroup");
validateIntElement(validationResult, pollingInterval, "pollingInterval");
validateIntElement(validationResult, pollingTimeout, "pollingTimeout");
validateIntElement(validationResult, retryDelay, "retryDelay");
- validateStringListElement(validationResult, messageBusAddress, "messageBusAddress");
validateStringListElement(validationResult, artifactTypes, "artifactTypes");
return validationResult;
}
final GroupValidationResult validationResult = configParameters.validate();
assertTrue(validationResult.isValid());
final SdcConfiguration config = new SdcConfiguration(configParameters);
- assertEquals(Arrays.asList("a.com", "b.com", "c.com"), config.getMsgBusAddress());
assertEquals(Arrays.asList("TOSCA_CSAR", "HEAT", "HELM"), config.getRelevantArtifactTypes());
- assertEquals("localhost", config.getAsdcAddress());
+ assertEquals("localhost", config.getSdcAddress());
assertEquals("policy", config.getUser());
assertEquals("policy", config.getPassword());
assertEquals(20, config.getPollingInterval());
assertEquals("null", config.getKeyStorePassword());
assertEquals(false, config.activateServerTLSAuth());
assertEquals(true, config.isFilterInEmptyResources());
- assertEquals(false, config.isUseHttpsWithDmaap());
}
@Test
public void testSdcConfigurationBuilder() {
final SdcReceptionHandlerConfigurationParameterBuilder builder =
- new SdcReceptionHandlerConfigurationParameterBuilder().setAsdcAddress("localhost")
+ new SdcReceptionHandlerConfigurationParameterBuilder().setSdcAddress("localhost")
.setConsumerGroup("policy-group").setConsumerId("policy-id").setEnvironmentName("TEST")
.setKeystorePassword("password").setKeystorePath("dummyPath").setPassword("policy")
.setPollingInterval(10).setPollingTimeout(20).setRetryDelay(30).setUser("policy")
- .setUseHttpsWithDmaap(false).setActiveserverTlsAuth(false).setFilterinEmptyResources(true)
- .setArtifactTypes(Arrays.asList("TOSCA_CSAR")).setMessageBusAddress(Arrays.asList("localhost"));
+ .setActiveserverTlsAuth(false).setFilterinEmptyResources(true)
+ .setArtifactTypes(Arrays.asList("TOSCA_CSAR"));
final SdcReceptionHandlerConfigurationParameterGroup configParameters =
new SdcReceptionHandlerConfigurationParameterGroup(builder);
configParameters.setName("SDCConfiguration");
- assertEquals(Arrays.asList("localhost"), configParameters.getMessageBusAddress());
assertEquals(Arrays.asList("TOSCA_CSAR"), configParameters.getArtifactTypes());
- assertEquals("localhost", configParameters.getAsdcAddress());
+ assertEquals("localhost", configParameters.getSdcAddress());
assertEquals("policy", configParameters.getUser());
assertEquals("policy", configParameters.getPassword());
assertEquals(10, configParameters.getPollingInterval());
assertEquals("password", configParameters.getKeyStorePassword());
assertEquals(false, configParameters.isActiveServerTlsAuth());
assertEquals(true, configParameters.isFilterInEmptyResources());
- assertEquals(false, configParameters.isUseHttpsWithDmaap());
- }
-
- @Test
- public void testSdcConfigurationWithNullList() {
-
- final SdcReceptionHandlerConfigurationParameterBuilder builder =
- new SdcReceptionHandlerConfigurationParameterBuilder().setAsdcAddress("localhost")
- .setConsumerGroup("policy-group").setConsumerId("policy-id").setEnvironmentName("TEST")
- .setKeystorePassword("password").setKeystorePath("dummyPath").setPassword("policy")
- .setPollingInterval(10).setPollingTimeout(20).setUser("policy").setUseHttpsWithDmaap(false)
- .setActiveserverTlsAuth(false).setFilterinEmptyResources(true)
- .setArtifactTypes(Arrays.asList("TOSCA_CSAR")).setMessageBusAddress(null);
- final SdcReceptionHandlerConfigurationParameterGroup configParameters =
- new SdcReceptionHandlerConfigurationParameterGroup(builder);
- configParameters.setName("SDCConfiguration");
-
- try {
- configParameters.validate();
- fail("Test must throw an exception");
- } catch (final Exception exp) {
- assertTrue(exp.getMessage().contains("collection parameter \"messageBusAddress\" is null"));
- }
}
@Test
public void testSdcConfigurationWithEmptyStringList() {
final SdcReceptionHandlerConfigurationParameterBuilder builder =
- new SdcReceptionHandlerConfigurationParameterBuilder().setAsdcAddress("localhost")
+ new SdcReceptionHandlerConfigurationParameterBuilder().setSdcAddress("localhost")
.setConsumerGroup("policy-group").setConsumerId("policy-id").setEnvironmentName("TEST")
.setKeystorePassword("password").setKeystorePath("dummyPath").setPassword("policy")
- .setPollingInterval(10).setPollingTimeout(20).setUser("policy").setUseHttpsWithDmaap(false)
+ .setPollingInterval(10).setPollingTimeout(20).setUser("policy")
.setActiveserverTlsAuth(false).setFilterinEmptyResources(true)
- .setArtifactTypes(Arrays.asList("")).setMessageBusAddress(Arrays.asList("localhost"));
+ .setArtifactTypes(Arrays.asList(""));
final SdcReceptionHandlerConfigurationParameterGroup configParameters =
new SdcReceptionHandlerConfigurationParameterGroup(builder);
configParameters.setName("SDCConfiguration");
{
"name" : "parameterConfig1",
- "asdcAddress": "localhost",
- "messageBusAddress": [
- "a.com",
- "b.com",
- "c.com"
- ],
+ "sdcAddress": "localhost",
"user": "policy",
"password": "policy",
"pollingInterval":20,
"keyStorePath": "null",
"keyStorePassword": "null",
"activeServerTlsAuth": false,
- "isFilterInEmptyResources": true,
- "isUseHttpsWithDmaap": false
+ "isFilterInEmptyResources": true
}
{
"name" : "parameterConfig1",
- "asdcAddress": "",
- "messageBusAddress": [
- "a.com",
- "b.com",
- "c.com"
- ],
+ "sdcAddress": "",
"user": "tbdsdc-1480",
"password": "tbdsdc-1480",
"pollingInterval":-1,
"keyStorePath": "null",
"keyStorePassword": "null",
"activeserverTlsAuth": false,
- "isFilterInEmptyResources": true,
- "isUseHttpsWithDmaap": false
+ "isFilterInEmptyResources": true
}
<parent>
<groupId>org.onap.multicloud.framework</groupId>
<artifactId>multicloud-framework</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.8.3-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.onap.multicloud.framework</groupId>
<artifactId>multicloud-framework-artifactbroker</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.9.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>multicloud-framework-artifactbroker</name>
<description>artifact broker</description>
<sonar.coverage.jacoco.xmlReportPaths>
${project.reporting.outputDirectory}/jacoco-ut/jacoco.xml
</sonar.coverage.jacoco.xmlReportPaths>
+ <sdc-dist-client-version>2.0.0</sdc-dist-client-version>
</properties>
<modules>
<module>model</module>
<module>plugins</module>
<module>packages</module>
</modules>
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.onap.sdc.sdc-distribution-client</groupId>
+ <artifactId>sdc-distribution-client</artifactId>
+ <version>${sdc-dist-client-version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
- <version>2.13.3</version>
+ <version>2.16.0</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
- <version>2.9.8</version>
+ <version>2.12.3</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-core</artifactId>
+ <version>2.12.3</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<parent>
<groupId>org.onap.multicloud.framework</groupId>
<artifactId>multicloud-framework-artifactbroker</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.9.1-SNAPSHOT</version>
</parent>
<artifactId>multicloud-framework-artifactbroker-reception</artifactId>
--- /dev/null
+..
+ This work is licensed under a Creative Commons Attribution 4.0
+ International License.
+
+=========================================
+MultiCloud K8sPlugin API v1 Specification
+=========================================
+
+The is the specification for MultiCloud K8sPlugin API version v1.
+
+API Swagger
+===========
+
+The specification of the K8sPlugin v1 API in Swagger format:
+
+:download:`k8splugin-v1-api-swagger.json <k8splugin/k8splugin-v1-api-swagger.json>`
+
+API Catalog
+===========
+
+.. warning::
+ In the used Sphinx plugin `sphinxcontrib-swaggerdoc` some information of the swagger file is not
+ rendered completely, e.g. the request body. Use your favorite Swagger Editor and paste the swagger file
+ to get a complete view of the API reference, e.g. on https://editor.swagger.io/.
+
+.. swaggerv2doc:: k8splugin/k8splugin-v1-api-swagger.json
This work is licensed under a Creative Commons Attribution 4.0
International License.
+:orphan:
+
===============================
ONAP MultiCloud CSIT Test Guide
===============================
This work is licensed under a Creative Commons Attribution 4.0
International License.
+:orphan:
+
=============
Release Notes
=============
.ribbon {
- z-index: 1000;
- background-color: #a00;
- overflow: hidden;
- white-space: nowrap;
- position: fixed;
- top: 25px;
- right: -50px;
- -webkit-transform: rotate(45deg);
- -moz-transform: rotate(45deg);
- -ms-transform: rotate(45deg);
- -o-transform: rotate(45deg);
- transform: rotate(45deg);
- -webkit-box-shadow: 0 0 10px #888;
- -moz-box-shadow: 0 0 10px #888;
- box-shadow: 0 0 10px #888;
-
-}
-
-.ribbon a {
- border: 1px solid #faa;
- color: #fff;
- display: block;
- font: bold 81.25% 'Helvetica Neue', Helvetica, Arial, sans-serif;
- margin: 1px 0;
- padding: 10px 50px;
- text-align: center;
- text-decoration: none;
- text-shadow: 0 0 5px #444;
- transition: 0.5s;
-}
-
-.ribbon a:hover {
- background: #c11;
- color: #fff;
-}
-
-
-/* override table width restrictions */
-@media screen and (min-width: 767px) {
-
- .wy-table-responsive table td, .wy-table-responsive table th {
- /* !important prevents the common CSS stylesheets from overriding
- this as on RTD they are loaded after this stylesheet */
- white-space: normal !important;
- }
-
- .wy-table-responsive {
- overflow: visible !important;
- }
-}
-
-@media screen and (max-width: 767px) {
- .wy-table-responsive table td {
- white-space: nowrap;
+ z-index: 1000;
+ background-color: #a00;
+ overflow: hidden;
+ white-space: nowrap;
+ position: fixed;
+ top: 25px;
+ right: -50px;
+ -webkit-transform: rotate(45deg);
+ -moz-transform: rotate(45deg);
+ -ms-transform: rotate(45deg);
+ -o-transform: rotate(45deg);
+ transform: rotate(45deg);
+ -webkit-box-shadow: 0 0 10px #888;
+ -moz-box-shadow: 0 0 10px #888;
+ box-shadow: 0 0 10px #888;
+
+ }
+
+ .ribbon a {
+ border: 1px solid #faa;
+ color: #fff;
+ display: block;
+ font: bold 81.25% 'Helvetica Neue', Helvetica, Arial, sans-serif;
+ margin: 1px 0;
+ padding: 10px 50px;
+ text-align: center;
+ text-decoration: none;
+ text-shadow: 0 0 5px #444;
+ transition: 0.5s;
+ }
+
+ .ribbon a:hover {
+ background: #c11;
+ color: #fff;
+ }
+
+
+ /* override table width restrictions */
+ @media screen and (min-width: 767px) {
+
+ .wy-table-responsive table td, .wy-table-responsive table th {
+ /* !important prevents the common CSS stylesheets from overriding
+ this as on RTD they are loaded after this stylesheet */
+ white-space: normal !important;
}
-}
-
-/* fix width of the screen */
-
-.wy-nav-content {
- max-width: none;
-}
+
+ .wy-table-responsive {
+ overflow: visible !important;
+ }
+ }
+
+ @media screen and (max-width: 767px) {
+ .wy-table-responsive table td {
+ white-space: nowrap;
+ }
+ }
+
+ /* fix width of the screen */
+
+ .wy-nav-content {
+ max-width: 800px;
+ }
\ No newline at end of file
-from docs_conf.conf import *
+roject = "onap"
+release = "master"
+version = "master"
-branch = 'latest'
-master_doc = 'index'
+author = "Open Network Automation Platform"
+# yamllint disable-line rule:line-length
+copyright = "ONAP. Licensed under Creative Commons Attribution 4.0 International License"
-linkcheck_ignore = [
- 'http://localhost',
+pygments_style = "sphinx"
+html_theme = "sphinx_rtd_theme"
+html_theme_options = {
+ "style_nav_header_background": "white",
+ "sticky_navigation": "False" }
+html_logo = "_static/logo_onap_2017.png"
+html_favicon = "_static/favicon.ico"
+html_static_path = ["_static"]
+html_show_sphinx = False
+
+extensions = [
+ 'sphinx.ext.intersphinx',
+ 'sphinx.ext.graphviz',
+ 'sphinxcontrib.blockdiag',
+ 'sphinxcontrib.seqdiag',
+ 'sphinxcontrib.swaggerdoc',
+ 'sphinxcontrib.plantuml'
]
+#
+# Map to 'latest' if this file is used in 'latest' (master) 'doc' branch.
+# Change to {releasename} after you have created the new 'doc' branch.
+#
+
+branch = 'latest'
+
intersphinx_mapping = {}
+doc_url = 'https://docs.onap.org/projects'
+master_doc = 'index'
+
+exclude_patterns = ['.tox']
+
+spelling_word_list_filename='spelling_wordlist.txt'
+spelling_lang = "en_GB"
+
+#
+# Example:
+# intersphinx_mapping['onap-aai-aai-common'] = ('{}/onap-aai-aai-common/en/%s'.format(doc_url) % branch, None)
+#
html_last_updated_fmt = '%d-%b-%y %H:%M'
def setup(app):
- app.add_stylesheet("css/ribbon.css")
+ app.add_css_file("css/ribbon.css")
+
+linkcheck_ignore = [
+ r'http:\.*',
+ r'https:\.*'
+ r'\.*'
+]
+++ /dev/null
----
-project_cfg: onap
-project: onap
-
-# Change this to ReleaseBranchName to modify the header
-default-version: latest
-#
MultiCloud-APIv0-Specification
MultiCloud-APIv1-Specification
+ MultiCloud-K8sPlugin-APIv1-Specification
MultiCloud Release Notes
--- /dev/null
+{
+ "swagger": "2.0",
+ "info": {
+ "description": "K8s Plugin v1 API for ONAP Honolulu release",
+ "version": "0.8.0",
+ "title": "K8s Plugin v1 API",
+ "contact": {
+ "email": "ritu.sood@intel.com"
+ }
+ },
+ "host": "multicloud-k8s:9015",
+ "basePath": "/v1",
+ "tags": [
+ {
+ "name": "definition",
+ "description": "RB Definition management"
+ },
+ {
+ "name": "profile",
+ "description": "RB Definition profile management"
+ },
+ {
+ "name": "instance",
+ "description": "RB Instance management"
+ }
+ ],
+ "schemes": [
+ "http"
+ ],
+ "paths": {
+ "/rb/definition": {
+ "post": {
+ "tags": [
+ "definition"
+ ],
+ "summary": "Add a new RB Definition",
+ "description": "",
+ "operationId": "addRbDefinition",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "description": "RB Definition object to create",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/RbDefinition"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RbDefinition"
+ }
+ }
+ },
+ "405": {
+ "description": "Invalid input"
+ }
+ }
+ },
+ "get": {
+ "tags": [
+ "definition"
+ ],
+ "summary": "Get all RB Definitions",
+ "description": "Multiple RB Definitions",
+ "operationId": "getRbDefinitions",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RbDefinition"
+ }
+ }
+ },
+ "400": {
+ "description": "Invalid status value"
+ }
+ }
+ }
+ },
+ "/rb/definition/{rbName}": {
+ "get": {
+ "tags": [
+ "definition"
+ ],
+ "summary": "Get all RB Definitions of specified name",
+ "description": "Multiple RB Definitions",
+ "operationId": "getRbDefinitionsByName",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "rbName",
+ "in": "path",
+ "description": "Name of the RB Definition to return",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RbDefinition"
+ }
+ }
+ },
+ "400": {
+ "description": "Invalid status value"
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "definition"
+ ],
+ "summary": "Deletes RB Definitions of specified RB Name",
+ "description": "",
+ "operationId": "deleteRbDefinitionsByRbName",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "rbName",
+ "in": "path",
+ "description": "Name of the RB Definition to return",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Invalid identifiers supplied"
+ },
+ "404": {
+ "description": "RB Definition not found"
+ }
+ }
+ }
+ },
+ "/rb/definition/{rbName}/{rbVersion}": {
+ "get": {
+ "tags": [
+ "definition"
+ ],
+ "summary": "Get RB Definition by Name and Version",
+ "description": "Returns a single RB Definition object",
+ "operationId": "getRbDefinitionByRbName",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "rbName",
+ "in": "path",
+ "description": "Name of the RB Definition to return",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "rbVersion",
+ "in": "path",
+ "description": "Version of the RB Definition to return",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "schema": {
+ "$ref": "#/definitions/RbDefinition"
+ }
+ },
+ "400": {
+ "description": "Invalid identifiers supplied"
+ },
+ "404": {
+ "description": "RB Definition not found"
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "definition"
+ ],
+ "summary": "Deletes RB Definition",
+ "description": "",
+ "operationId": "deleteRbDefinitionByRbNameAndRbVersion",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "rbName",
+ "in": "path",
+ "description": "Name of the RB Definition to return",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "rbVersion",
+ "in": "path",
+ "description": "Version of the RB Definition to return",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Invalid identifiers supplied"
+ },
+ "404": {
+ "description": "RB Definition not found"
+ }
+ }
+ }
+ },
+ "/rb/definition/{rbName}/{rbVersion}/content": {
+ "post": {
+ "tags": [
+ "definition"
+ ],
+ "summary": "Uploads Helm package associated with RB Definition",
+ "description": "",
+ "operationId": "uploadRbDefnitionContent",
+ "consumes": [
+ "application/gzip"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "rbName",
+ "in": "path",
+ "description": "Name of the RB Definition to return",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "rbVersion",
+ "in": "path",
+ "description": "Version of the RB Definition to return",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "schema": {
+ "$ref": "#/definitions/ApiResponse"
+ }
+ }
+ }
+ }
+ },
+ "/rb/definition/{rbName}/{rbVersion}/profile": {
+ "post": {
+ "tags": [
+ "profile"
+ ],
+ "summary": "Add a new profile for RB Definition",
+ "description": "",
+ "operationId": "addProfileForDefinition",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "rbName",
+ "in": "path",
+ "description": "Name of the RB Definition to return",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "rbVersion",
+ "in": "path",
+ "description": "Version of the RB Definition to return",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "description": "RB Profile object to create",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/RbProfile"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RbProfile"
+ }
+ }
+ },
+ "405": {
+ "description": "Invalid input"
+ }
+ }
+ },
+ "get": {
+ "tags": [
+ "profile"
+ ],
+ "summary": "Get all RB Profiles for RB Definition",
+ "description": "Multiple RB Definitions",
+ "operationId": "getProfilesforRbDefinitions",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "rbName",
+ "in": "path",
+ "description": "Name of the RB Definition to return",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "rbVersion",
+ "in": "path",
+ "description": "Version of the RB Definition to return",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RbProfile"
+ }
+ }
+ },
+ "400": {
+ "description": "Invalid status value"
+ }
+ }
+ }
+ },
+ "/rb/definition/{rbName}/{rbVersion}/profile/{profileName}": {
+ "get": {
+ "tags": [
+ "profile"
+ ],
+ "summary": "Get RB Profile by Name",
+ "description": "Returns a single RB Profile object",
+ "operationId": "getRbProfileForRbDefinition",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "rbName",
+ "in": "path",
+ "description": "Name of the RB Definition to return",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "rbVersion",
+ "in": "path",
+ "description": "Version of the RB Definition to return",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "profileName",
+ "in": "path",
+ "description": "Name of the RB profile",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "schema": {
+ "$ref": "#/definitions/RbProfile"
+ }
+ },
+ "400": {
+ "description": "Invalid identifiers supplied"
+ },
+ "404": {
+ "description": "RB Profile not found"
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "profile"
+ ],
+ "summary": "Deletes RB Profile",
+ "description": "",
+ "operationId": "deleteRbProfileForRbDefinition",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "rbName",
+ "in": "path",
+ "description": "Name of the RB Definition",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "rbVersion",
+ "in": "path",
+ "description": "Version of the RB Definition",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "profileName",
+ "in": "path",
+ "description": "Name of the RB profile",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Invalid identifiers supplied"
+ },
+ "404": {
+ "description": "RB Definition of RB profile not found"
+ }
+ }
+ }
+ },
+ "/rb/definition/{rbName}/{rbVersion}/profile/{profileName}/content": {
+ "post": {
+ "tags": [
+ "profile"
+ ],
+ "summary": "Uploads tgz package associated with RB Profile",
+ "description": "",
+ "operationId": "uploadRbProfileContent",
+ "consumes": [
+ "application/gzip"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "rbName",
+ "in": "path",
+ "description": "Name of the RB Definition",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "rbVersion",
+ "in": "path",
+ "description": "Version of the RB Definition",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "profileName",
+ "in": "path",
+ "description": "Name of the RB profile",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "schema": {
+ "$ref": "#/definitions/ApiResponse"
+ }
+ }
+ }
+ }
+ },
+ "/instance": {
+ "post": {
+ "tags": [
+ "instance"
+ ],
+ "summary": "Create new RB Instance",
+ "description": "",
+ "operationId": "createRbInstance",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "description": "RB Instance properties to create",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/RbInstanceRequest"
+ }
+ }
+ ],
+ "responses": {
+ "405": {
+ "description": "Invalid input"
+ }
+ }
+ },
+ "get": {
+ "tags": [
+ "instance"
+ ],
+ "summary": "Get all RB Instances",
+ "description": "Multiple RB Instances",
+ "operationId": "getRbInstances",
+ "produces": [
+ "application/json"
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RbInstance"
+ }
+ }
+ },
+ "400": {
+ "description": "Invalid status value"
+ }
+ }
+ }
+ },
+ "/instance/{instanceId}": {
+ "get": {
+ "tags": [
+ "instance"
+ ],
+ "summary": "Get RB Instance by ID",
+ "description": "Returns a single RB Instance object",
+ "operationId": "getRbInstanceById",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "instanceId",
+ "in": "path",
+ "description": "ID of the instance",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "schema": {
+ "$ref": "#/definitions/RbInstance"
+ }
+ },
+ "400": {
+ "description": "Invalid identifiers supplied"
+ },
+ "404": {
+ "description": "RB Definition not found"
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "instance"
+ ],
+ "summary": "Deletes RB Instance",
+ "description": "",
+ "operationId": "deleteRbInstanceById",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "instanceId",
+ "in": "path",
+ "description": "ID of the instance",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Invalid identifiers supplied"
+ },
+ "404": {
+ "description": "Rb Instance not found"
+ }
+ }
+ }
+ },
+ "/instance/{instanceId}/status": {
+ "get": {
+ "tags": [
+ "instance"
+ ],
+ "summary": "Get RB Instance Status",
+ "description": "Returns status of a single RB Instance object",
+ "operationId": "getRbInstanceStatus",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "instanceId",
+ "in": "path",
+ "description": "ID of the instance",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "schema": {
+ "$ref": "#/definitions/RbInstanceStatus"
+ }
+ },
+ "400": {
+ "description": "Invalid identifiers supplied"
+ },
+ "404": {
+ "description": "RB Instance not found"
+ }
+ }
+ }
+ },
+ "/instance/{instanceId}/query": {
+ "get": {
+ "tags": [
+ "instance"
+ ],
+ "summary": "Get filtered out RB Instance status",
+ "description": "Returns filtered status of a single RB Instance object",
+ "operationId": "queryRbInstanceStatus",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "instanceId",
+ "in": "path",
+ "description": "ID of the instance",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "in": "query",
+ "name": "ApiVersion",
+ "type": "string",
+ "description": "Resource ApiVersion like 'apps/v1'",
+ "required": true
+ },
+ {
+ "in": "query",
+ "name": "Kind",
+ "type": "string",
+ "description": "Resource Kind like 'Deployment'",
+ "required": true
+ },
+ {
+ "in": "query",
+ "name": "Name",
+ "type": "string",
+ "description": "Name of Resource like 'my-pod-1'",
+ "required": false
+ },
+ {
+ "in": "query",
+ "name": "Labels",
+ "type": "string",
+ "description": "One or many pairs of label name/value data for filtering Resources like 'app=test,version=prod'",
+ "required": false
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "schema": {
+ "$ref": "#/definitions/RbInstanceStatus"
+ }
+ },
+ "400": {
+ "description": "Invalid identifiers supplied"
+ },
+ "404": {
+ "description": "RB Instance not found"
+ }
+ }
+ }
+ }
+ },
+ "definitions": {
+ "RbDefinition": {
+ "type": "object",
+ "properties": {
+ "rb-name": {
+ "type": "string"
+ },
+ "rb-version": {
+ "type": "string"
+ },
+ "chart-name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "labels": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "example": {
+ "rb-name": "test",
+ "rb-version": "v1",
+ "chart-name": "nginx",
+ "description": "nginx definition",
+ "labels": [
+ "some label"
+ ]
+ }
+ },
+ "RbProfile": {
+ "type": "object",
+ "properties": {
+ "rb-name": {
+ "type": "string"
+ },
+ "rb-version": {
+ "type": "string"
+ },
+ "profile-name": {
+ "type": "string"
+ },
+ "release-name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "kubernetes-version": {
+ "type": "string"
+ }
+ },
+ "example": {
+ "rb-name": "test",
+ "rb-version": "v1",
+ "profile-name": "p1",
+ "release-name": "r1",
+ "namespace": "default",
+ "kubernetes-version": "12.0.1"
+ }
+ },
+ "RbInstance": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "release-name": {
+ "type": "string"
+ },
+ "namespace": {
+ "type": "string"
+ },
+ "request": {
+ "$ref": "#/definitions/RbInstanceRequest"
+ },
+ "resources": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RbInstanceResource"
+ }
+ }
+ }
+ },
+ "RbInstanceStatus": {
+ "type": "object",
+ "properties": {
+ "ready": {
+ "type": "boolean"
+ },
+ "request": {
+ "$ref": "#/definitions/RbInstanceRequest"
+ },
+ "resourcesCount": {
+ "type": "integer"
+ },
+ "resourcesStatus": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RbInstanceResourceStatus"
+ }
+ }
+ }
+ },
+ "RbInstanceResource": {
+ "type": "object",
+ "properties": {
+ "Name": {
+ "type": "string"
+ },
+ "GVK": {
+ "$ref": "#/definitions/GVK"
+ }
+ },
+ "example": {
+ "GVK": {
+ "Group": "apps",
+ "Kind": "Deployment",
+ "Version": "v1"
+ },
+ "Name": "test-dep"
+ }
+ },
+ "RbInstanceResourceStatus": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "GVK": {
+ "$ref": "#/definitions/GVK"
+ },
+ "status": {
+ "type": "object"
+ }
+ },
+ "example": {
+ "GVK": {
+ "Group": "apps",
+ "Kind": "Deployment",
+ "Version": "v1"
+ },
+ "Name": "test-dep"
+ }
+ },
+ "GVK": {
+ "type": "object",
+ "properties": {
+ "Group": {
+ "type": "string"
+ },
+ "Version": {
+ "type": "string"
+ },
+ "Kind": {
+ "type": "string"
+ }
+ },
+ "example": {
+ "Group": "apps",
+ "Version": "v1",
+ "Kind": "Deployment"
+ }
+ },
+ "RbInstanceRequest": {
+ "type": "object",
+ "properties": {
+ "rb-name": {
+ "type": "string"
+ },
+ "rb-version": {
+ "type": "string"
+ },
+ "profile-name": {
+ "type": "string"
+ },
+ "release-name": {
+ "type": "string"
+ },
+ "cloud-region": {
+ "type": "string"
+ },
+ "labels": {
+ "type": "object"
+ },
+ "override-values": {
+ "type": "object"
+ }
+ },
+ "example": {
+ "cloud-region": "kus",
+ "profile-name": "p1",
+ "release-name": "release-x",
+ "rb-name": "test",
+ "rb-version": "v1",
+ "override-parameters": {
+ "optionalDictOfParameters": "andTheirValues, like",
+ "global.name": "dummy-name"
+ },
+ "labels": {
+ "optionalLabelForInternalK8spluginInstancesMetadata": "dummy-value"
+ }
+ }
+ },
+ "ApiResponse": {
+ "type": "string"
+ }
+ },
+ "externalDocs": {
+ "description": "K8s Plugin v1 API - ONAP wiki",
+ "url": "https://wiki.onap.org/display/DW/MultiCloud+K8s-Plugin-service+API"
+ }
+}
\ No newline at end of file
.. http://creativecommons.org/licenses/by/4.0\r
.. Copyright (c) 2017-2018 VMware, Inc.\r
\r
+:orphan:\r
+\r
==================================\r
MultiCloud HPA Discovery Pluggable\r
==================================\r
Abstract
========
-This document provides the release notes for the ``guilin`` release.
+This document provides the release notes for the ``jakarta`` release.
Summary
=======
-MultiCloud Project enhances artifactbroker to support CNF orchestration with
-artifact format of helm charts (without wrapping in a dummy heat template)
+
+Version: 11.0.0
+---------------
+
+There are no updates to the Multicloud project for the Kohn release
Release Data
| **Project** | MultiCloud |
| | |
+---------------------------+-------------------------------------------------+
-| **Docker images** | onap/multicloud-framework:1.6.0 |
-| | onap/multicloud-framework-artifactbroker:1.6.0 |
-| | onap/multicloud-openstack-starlingx:1.5.5 |
-| | onap/multicloud-openstack-windriver:1.5.5 |
-| | onap/multicloud-openstack-fcaps:1.5.5 |
-| | onap/multicloud-openstack-pike:1.5.5 |
-| | onap/multicloud-azure:1.2.4 |
-| | onap/multicloud-k8s:0.7.0 |
+| **Docker images** | onap/multicloud-framework:1.9.0 |
+| | onap/multicloud-framework-artifactbroker:1.9.0 |
+| | onap/multicloud-openstack-starlingx:1.5.7 |
+| | onap/multicloud-openstack-windriver:1.5.7 |
+| | onap/multicloud-openstack-fcaps:1.5.7 |
+| | onap/multicloud-openstack-pike:1.5.7 |
+| | onap/multicloud-k8s:0.10.1 |
+---------------------------+-------------------------------------------------+
-| **Release designation** | Guilin 7.0.0 |
+| **Release designation** | kohn |
| | |
+---------------------------+-------------------------------------------------+
New features
------------
-Enables CNF orchestration with artifact format of helm charts
+N/A
**Bug fixes**
-- `MULTICLOUD-1195 <https://jira.onap.org/browse/MULTICLOUD-1195>`_
- Multicloud used wrong MSB URL
-
+N/A
+
**Known Issues**
- `MULTICLOUD-359 <https://jira.onap.org/browse/MULTICLOUD-359>`_
MultiCloud OpenStack: image creating API cannot handle large image file
-- `MULTICLOUD-389 <https://jira.onap.org/browse/MULTICLOUD-389>`_
- MultiCloud OpenStack: keypair cannot be passed for nova instance creation
-
- `MULTICLOUD-421 <https://jira.onap.org/browse/MULTICLOUD-421>`_
MultiCloud OpenStack: API request to multicloud with authorization header will be rejected
- `MULTICLOUD-601 <https://jira.onap.org/browse/MULTICLOUD-601>`_
MultiCloud k8s: move to sigs yaml from ghodss
-- `MULTICLOUD-661 <https://jira.onap.org/browse/MULTICLOUD-661>`_
- MultiCloud k8s: OVN Installation issues
+- `MULTICLOUD-1312 <https://jira.onap.org/browse/MULTICLOUD-1312>`_
+ MultiCloud k8s: Query API returns 500 instead of 404
+
+- `MULTICLOUD-1329 <https://jira.onap.org/browse/MULTICLOUD-1329>`_
+ MultiCloud k8s: Redundant data in MongoDB created
+
+- `MULTICLOUD-1330 <https://jira.onap.org/browse/MULTICLOUD-1330>`_
+ MultiCloud k8s: Consul operation interface problems
+- `MULTICLOUD-1331 <https://jira.onap.org/browse/MULTICLOUD-1331>`_
+ MultiCloud k8s: Instance status update failure
+
+- `MULTICLOUD-1459 <https://jira.onap.org/browse/MULTICLOUD-1331>`_
+ MultiCloud k8s: Multicloud-k8s dockers contain GPLv3
Deliverables
------------
N/A
-
Known Vulnerabilities
---------------------
-
MULTICLOUD code has been formally scanned during build time using NexusIQ and
all Critical vulnerabilities have been addressed, items that remain open have
been assessed for risk and determined to be false positive.
The MULTICLOUD open Critical security vulnerabilities and their risk
assessment have been documented as part of the
`project
-<https://wiki.onap.org/pages/viewpage.action?pageId=68541501>`_.
-
+<https://wiki.onap.org/display/SV/Istanbul+Multicloud>`_.
Workarounds
-----------
N/A
-
Security Notes
--------------
**Fixed Security Issues**
-N/A
+CVE issue pertained to multicloud-openstack components reported
+by https://wiki.onap.org/display/SV/Istanbul+Multicloud
+has been fixed by upgrading dependencies
+
+CVE issue pertained to multicloud-framework components reported
+by https://wiki.onap.org/display/SV/Istanbul+Multicloud
+has been fixed by upgrading dependencies
**Known Security Issues**
-N/A
+
+Fixing of CVE issue pertained to multicloud-framework-artifactbroker components
+reported by https://wiki.onap.org/display/SV/Istanbul+Multicloud
+is an ongoing effort
+
+
+Fixing of CVE issue pertained to multicloud-openstack-vmware components
+reported by https://wiki.onap.org/display/SV/Istanbul+Multicloud
+will not be fixed due to lack of commitment from community
+
Test Results
============
References
==========
-For more information on the ONAP ``guilin`` release, please see:
+For more information on the ONAP ``kohn`` release, please see:
#. `ONAP Home Page`_
#. `ONAP Documentation`_
- `Passing Badge information for MULTICLOUD <https://bestpractices.coreinfrastructure.org/en/projects/1706>`_
- - `Project Vulnerability Review Table for Multicloud <https://wiki.onap.org/pages/viewpage.action?pageId=68541501>`_
+ - `Project Vulnerability Review Table for Multicloud <https://wiki.onap.org/display/SV/Istanbul+Multicloud>`_
- `Multicloud K8s Plugin Service APIs <https://wiki.onap.org/display/DW/MultiCloud+K8s-Plugin-service+API's>`_
-tox
-Sphinx
-doc8
-docutils
-setuptools
-six
-sphinx_rtd_theme>=0.4.3
-sphinxcontrib-blockdiag
-sphinxcontrib-needs>=0.2.3
-sphinxcontrib-nwdiag
-sphinxcontrib-seqdiag
+sphinx>=4.2.0 # BSD
+sphinx-rtd-theme>=1.0.0 # MIT
+sphinxcontrib-blockdiag # BSD
+sphinxcontrib-seqdiag # BSD
sphinxcontrib-swaggerdoc
+sphinxcontrib-spelling
sphinxcontrib-plantuml
-sphinx_bootstrap_theme
-lfdocs-conf
+six
+
+:orphan:
+
INTRO
=====
So far the logging of multi-vim is not able to support customer configuration,
handler context specific logging like
-MDC[MDC_Document]_, also it dose't propagate transaction-ID in REST headers
+MDC `MDC_Document`_ , also it dose't propagate transaction-ID in REST headers
which is critical to tracing request.
There are 4 python containers in oom project need to configure filebeat
container for shipping logs.
-.. [MDC_Document] https://wiki.onap.org/display/DW/ONAP+Application+Logging+Guidelines+v1.1#ONAPApplicationLoggingGuidelinesv1.1-MDCs
+.. _MDC_Document: https://wiki.onap.org/display/DW/ONAP+Application+Logging+Guidelines+v1.1#ONAPApplicationLoggingGuidelinesv1.1-MDCs
In addition the current logging is very difficult to understand behavior
and performance.
Filebeat container
------------------
-Logging architecture[Log_Architecture]_ use Filebeat collects logs from
+Logging architecture `Log_Architecture`_ use Filebeat collects logs from
multi-vim containers and ships them to the
centralized logging stack. To enable this feature it need to add Filebeat
container in multi-vim pod that was
deployed by OOM, as well Yaml file will be used to configure Filebeat.
-.. [Log_Architecture] https://wiki.onap.org/display/DW/Logging+Architecture
+.. _Log_Architecture: https://wiki.onap.org/display/DW/Logging+Architecture
Tracing ID
----------
================== ========== ======= ========================================
There are several constraints/assumptions on cloudOwner and
-cloudRegionId. `cloud-region`_ . For k8s, cloudRegionId is (ab)used to
+cloudRegionId. For k8s, cloudRegionId is (ab)used to
specify k8s cluster instance. ONAP admin has to assign unique id for
cloudRegionId as id for k8s cluster instance.
ONAP components
---------------
-.. _ESR: Extenral System Register https://wiki.onap.org/pages/viewpage.action?pageId=11930343#A&AI:ExternalSystemOperationAPIDefinition-VIM
+.. _"ESR: External System Register" https://wiki.onap.org/pages/viewpage.action?pageId=11930343#A&AI:ExternalSystemOperationAPIDefinition-VIM
.. _AAI: Active and Available Inventory https://wiki.onap.org/display/DW/Active+and+Available+Inventory+Project
-.. _OOM: ONAP Operations Manager https://wiki.onap.org/display/DW/ONAP+Operations+Manager+Project
+.. _"OOM: ONAP Operations Manager" https://wiki.onap.org/display/DW/ONAP+Operations+Manager+Project
.. _ONAPREST: RESTful API Design Specification https://wiki.onap.org/display/DW/RESTful+API+Design+Specification
kubernetes
.. _issue23: https://github.com/kubernetes/kubeadm/issues/23
-misc
-----
-.. _cloud-region: How to add a new cloud region and some thoughts https://wiki.onap.org/download/attachments/25429038/HowToAddNewCloudRegionAndThoughts.pdf
+.. misc
+.. ----
+.. .. _cloud-region: How to add a new cloud region and some thoughts https://wiki.onap.org/download/attachments/25429038/HowToAddNewCloudRegionAndThoughts.pdf
Contributors
This work is licensed under a Creative Commons Attribution 4.0
International License.
+:orphan:
+
======================================================
MultiCloud security enhancement: secured communication
======================================================
.. http://creativecommons.org/licenses/by/4.0\r
.. Copyright (c) 2019 Intel, Inc.\r
\r
+:orphan:\r
+\r
=================================================\r
MultiCloud for k8s HPA Discovery And Registration\r
=================================================\r
This work is licensed under a Creative Commons Attribution 4.0
International License.
+:orphan:
+
===============================================
Parallelism improvement of Multi Cloud Services
===============================================
[tox]
minversion = 1.6
-envlist = docs,
+envlist = docs,docs-linkcheck,docs-spellcheck
skipsdist = true
[testenv:docs]
-basepython = python3
-deps = -r{toxinidir}/requirements-docs.txt
+basepython = python3.8
+deps =
+ -r{toxinidir}/requirements-docs.txt
+ -chttps://releases.openstack.org/constraints/upper/yoga
+ -chttps://git.onap.org/doc/plain/etc/upper-constraints.onap.txt?h=master
commands =
- sphinx-build -b html -n -d {envtmpdir}/doctrees ./ {toxinidir}/_build/html
- echo "Generated docs available in {toxinidir}/_build/html"
-whitelist_externals =
- echo
- git
- sh
+ sphinx-build -q -b html -n -d {envtmpdir}/doctrees {toxinidir} {toxinidir}/_build/html
[testenv:docs-linkcheck]
-basepython = python3
-#deps = -r{toxinidir}/requirements-docs.txt
-commands = echo "Link Checking not enforced"
-#commands = sphinx-build -b linkcheck -d {envtmpdir}/doctrees ./ {toxinidir}/_build/linkcheck
-whitelist_externals = echo
+basepython = python3.8
+deps =
+ -r{toxinidir}/requirements-docs.txt
+ -chttps://releases.openstack.org/constraints/upper/yoga
+ -chttps://git.onap.org/doc/plain/etc/upper-constraints.onap.txt?h=master
+commands =
+ sphinx-build -q -b linkcheck -d {envtmpdir}/doctrees {toxinidir} {toxinidir}/_build/linkcheck
+
+[testenv:docs-spellcheck]
+basepython = python3.8
+deps =
+ -r{toxinidir}/requirements-docs.txt
+ -chttps://releases.openstack.org/constraints/upper/yoga
+ -chttps://git.onap.org/doc/plain/etc/upper-constraints.onap.txt?h=master
+commands =
+ sphinx-build -q -b spelling -d {envtmpdir}/doctrees {toxinidir} {toxinidir}/_build/spellcheck
-FROM python:3.7-alpine
+#FROM python:3.8-alpine
+FROM nexus3.onap.org:10001/onap/integration-python:9.1.0
ENV MSB_PROTO "http"
ENV MSB_ADDR "127.0.0.1"
ENV AAI_SCHEMA_VERSION "v11"
ENV AAI_USERNAME "AAI"
ENV AAI_PASSWORD "AAI"
+ENV AAI_PROTOCOL "https"
EXPOSE 9001
-RUN addgroup -S onap && adduser -S -G onap onap
+# RUN addgroup -S onap && adduser -S -G onap onap
+USER root
COPY ./multicloud-framework-broker-*.zip /opt/multicloud-framework.zip
RUN apk update && \
- apk add uwsgi wget unzip gcc make libc-dev libffi-dev openssl-dev && \
+ apk add --no-cache uwsgi && \
+ apk add --no-cache --virtual .build-deps wget unzip gcc make libc-dev libffi-dev openssl-dev && \
cd /opt/ && \
unzip -q -o -B multicloud-framework.zip && \
rm -f multicloud-framework.zip && \
pip3 install -r /opt/multivimbroker/requirements.txt && \
pip3 install -r /opt/multivimbroker/uwsgi-requirements.txt && \
- apk del wget unzip gcc make libc-dev libffi-dev openssl-dev && \
+ apk del --no-network .build-deps && \
mkdir -p /var/log/onap/multicloud/multivimbroker && \
chown onap:onap /var/log/onap -R && \
chown onap:onap /opt/multivimbroker -R
BUILD_ARGS="--no-cache"
ORG="onap"
-VERSION="1.6.0-SNAPSHOT"
-STAGING_VERSION="1.6.0-STAGING"
+VERSION="1.9.1-SNAPSHOT"
+STAGING_VERSION="1.9.1-STAGING"
PROJECT="multicloud"
IMAGE="framework"
DOCKER_REPOSITORY="nexus3.onap.org:10003"
ENV AAI_SCHEMA_VERSION "v11"
ENV AAI_USERNAME "AAI"
ENV AAI_PASSWORD "AAI"
+ENV AAI_PROTOCOL "https"
EXPOSE 9001
+++ /dev/null
-# Copyright (c) 2017-2018 VMware, Inc.
-#
-# 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.
-
-
-import uuid
-from onaplogging.mdcContext import MDC
-from multivimbroker.pub.config.config import SERVICE_NAME
-from multivimbroker.pub.config.config import FORWARDED_FOR_FIELDS
-
-
-class LogContextMiddleware(object):
-
- # the last IP behind multiple proxies, if no exist proxies
- # get local host ip.
- def _getLastIp(self, request):
-
- ip = ""
- try:
- for field in FORWARDED_FOR_FIELDS:
- if field in request.META:
- if ',' in request.META[field]:
- parts = request.META[field].split(',')
- ip = parts[-1].strip().split(":")[0]
- else:
- ip = request.META[field].split(":")[0]
-
- if ip == "":
- ip = request.META.get("HTTP_HOST").split(":")[0]
-
- except Exception:
- pass
-
- return ip
-
- def process_request(self, request):
-
- # Fetch TRANSACTIONID Id and pass to plugin server
- ReqeustID = request.META.get("HTTP_X_TRANSACTIONID", None)
- if ReqeustID is None:
- ReqeustID = str(uuid.uuid3(uuid.NAMESPACE_URL, SERVICE_NAME))
- request.META["HTTP_X_TRANSACTIONID"] = ReqeustID
- MDC.put("requestID", ReqeustID)
- # generate the unique id
- InovocationID = str(uuid.uuid4())
- MDC.put("invocationID", InovocationID)
- MDC.put("serviceName", SERVICE_NAME)
- # access ip
- MDC.put("serviceIP", self._getLastIp(request))
-
- return None
-
- def process_response(self, request, response):
-
- MDC.clear()
- return response
# [A&AI]
AAI_ADDR = "aai.api.simpledemo.openecomp.org"
AAI_PORT = "8443"
-AAI_SERVICE_URL = 'https://%s:%s/aai' % (AAI_ADDR, AAI_PORT)
+AAI_PROTOCOL = "https"
+AAI_SERVICE_URL = '%s://%s:%s/aai' % (AAI_PROTOCOL, AAI_ADDR, AAI_PORT)
AAI_SCHEMA_VERSION = "v13"
AAI_USERNAME = 'AAI'
AAI_PASSWORD = 'AAI'
level: "DEBUG"
class: "logging.handlers.RotatingFileHandler"
filename: "/var/log/onap/multicloud/multivimbroker/multivimbroker.log"
- formatter: "mdcFormat"
+ formatter: "standard"
maxBytes: 52428800
backupCount: 10
formatters:
standard:
format: "%(asctime)s|||||%(name)s||%(thread)||%(funcName)s||%(levelname)s||%(message)s"
- mdcFormat:
- format: "%(asctime)s|||||%(name)s||%(thread)s||%(funcName)s||%(levelname)s||%(message)s||||%(mdc)s \t"
- mdcfmt: "{requestID} {invocationID} {serviceName} {serviceIP}"
- datefmt: "%Y-%m-%d %H:%M:%S"
- (): onaplogging.mdcformatter.MDCFormatter
-
-
import os
import sys
-from logging import config
-from onaplogging import monkey
-monkey.patch_all()
+import platform
+import yaml
+from logging import config as log_config
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
- 'multivimbroker.middleware.LogContextMiddleware',
]
ROOT_URLCONF = 'multivimbroker.urls'
STATIC_URL = '/static/'
-
-LOGGING_CONFIG = None
-# yaml configuration of logging
-LOGGING_FILE = os.path.join(BASE_DIR, 'multivimbroker/pub/config/log.yml')
-config.yamlConfig(filepath=LOGGING_FILE, watchDog=True)
-
+if platform.system() == 'Windows' or 'test' in sys.argv:
+ LOGGING = {
+ 'version': 1,
+ 'disable_existing_loggers': True,
+ 'formatters': {
+ 'standard': {
+ 'format': '%(asctime)s:[%(name)s]:[%(filename)s]'
+ + '-[%(lineno)d] [%(levelname)s]:%(message)s',
+ },
+ },
+ 'filters': {
+ },
+ 'handlers': {
+ 'file_handler': {
+ 'level': 'DEBUG',
+ 'class': 'logging.handlers.RotatingFileHandler',
+ 'filename': os.path.join(BASE_DIR, 'logs/test.log'),
+ 'formatter': 'standard',
+ 'maxBytes': 1024 * 1024 * 50,
+ 'backupCount': 5,
+ },
+ },
+
+ 'loggers': {
+ 'common': {
+ 'handlers': ['file_handler'],
+ 'level': 'DEBUG',
+ 'propagate': False
+ },
+ }
+ }
+else:
+ log_path = "/var/log/onap/multicloud/multivimbroker"
+ if not os.path.exists(log_path):
+ os.makedirs(log_path)
+
+ LOGGING_CONFIG = None
+ # yaml configuration of logging
+ LOGGING_FILE = os.path.join(BASE_DIR, 'multivimbroker/pub/config/log.yml')
+ with open(file=LOGGING_FILE, mode='r', encoding="utf-8")as file:
+ logging_yaml = yaml.load(stream=file, Loader=yaml.FullLoader)
+ log_config.dictConfig(config=logging_yaml)
if 'test' in sys.argv:
- from multivimbroker.pub.config import config
+ # from multivimbroker.pub.config import config
REST_FRAMEWORK = {}
import platform
<parent>
<groupId>org.onap.multicloud.framework</groupId>
<artifactId>multicloud-framework</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.9.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
- <groupId>org.onap.multicloud.framework</groupId>
<artifactId>multicloud-framework-broker</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.9.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>multicloud-framework-broker</name>
<description>multivim broker</description>
# rest framework
-Django==2.2.3
-djangorestframework==3.9.3
+Django==3.2.7
+djangorestframework==3.12.4
# multipart support
# poster==0.8.1
# django-redis-cache==0.13.1
# for call rest api
-httplib2==0.13.0
+httplib2==0.19.1
# for call openstack api
# python-keystoneclient==3.6.0
# mock==2.0.0
# unittest_xml_reporting==1.12.0
-# for onap logging
-onappylog>=1.0.9
+PyYAML==5.4.1
# for pecan framework
# pecan>=1.2.1
sed -i "s/AAI_SCHEMA_VERSION =.*/AAI_SCHEMA_VERSION = \"${AAI_SCHEMA_VERSION}\"/g" multivimbroker/pub/config/config.py
sed -i "s/AAI_USERNAME =.*/AAI_USERNAME = \"${AAI_USERNAME}\"/g" multivimbroker/pub/config/config.py
sed -i "s/AAI_PASSWORD =.*/AAI_PASSWORD = \"${AAI_PASSWORD}\"/g" multivimbroker/pub/config/config.py
+sed -i "s/AAI_PROTOCOL =.*/AAI_PROTOCOL = \"${AAI_PROTOCOL}\"/g" multivimbroker/pub/config/config.py
logDir="/var/log/onap/multicloud/multivimbroker"
if [ ! -x $logDir ]; then
<modelVersion>4.0.0</modelVersion>
<groupId>org.onap.multicloud.framework</groupId>
<artifactId>multicloud-framework</artifactId>
- <version>1.6.0-SNAPSHOT</version>
+ <version>1.9.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>multicloud-framework</name>
<description>multicloud broker</description>
--- /dev/null
+distribution_type: 'container'
+container_release_tag: '1.7.0'
+project: 'multicloud-framework'
+log_dir: 'multicloud-framework-maven-docker-stage-master/757/'
+ref: 169c89e0c403dad3e3e538ae92b46f12971aa20a
+containers:
+ - name: 'multicloud/framework'
+ version: '1.7.0'
+ - name: 'multicloud/framework-artifactbroker'
+ version: '1.7.0'
--- /dev/null
+distribution_type: 'container'
+container_release_tag: '1.7.1'
+project: 'multicloud-framework'
+log_dir: 'multicloud-framework-maven-docker-stage-master/806/'
+ref: 311d1f0439e83698e626df392d743b4a20d4c256
+containers:
+ - name: 'multicloud/framework'
+ version: '1.7.1'
+ - name: 'multicloud/framework-artifactbroker'
+ version: '1.7.1'
--- /dev/null
+distribution_type: 'container'
+container_release_tag: '1.7.2'
+project: 'multicloud-framework'
+log_dir: 'multicloud-framework-maven-docker-stage-master/897/'
+ref: aee2986329a6ec2c6bf110b77f58eba7525645ed
+containers:
+ - name: 'multicloud/framework'
+ version: '1.7.2'
+ - name: 'multicloud/framework-artifactbroker'
+ version: '1.7.2'
--- /dev/null
+distribution_type: 'container'
+container_release_tag: '1.7.3'
+project: 'multicloud-framework'
+log_dir: 'multicloud-framework-maven-docker-stage-master/995/'
+ref: f2a54b5dec59e27ebb57efb5ff88956fca96c986
+containers:
+ - name: 'multicloud/framework'
+ version: '1.7.3'
+ - name: 'multicloud/framework-artifactbroker'
+ version: '1.7.3'
--- /dev/null
+distribution_type: 'container'
+container_release_tag: '1.8.0'
+project: 'multicloud-framework'
+log_dir: 'multicloud-framework-maven-docker-stage-master/1119/'
+ref: 2dd69c0d88813832699813f6f002f01d02566107
+containers:
+ - name: 'multicloud/framework'
+ version: '1.8.0'
+ - name: 'multicloud/framework-artifactbroker'
+ version: '1.8.0'
--- /dev/null
+distribution_type: 'container'
+container_release_tag: '1.8.1'
+project: 'multicloud-framework'
+log_dir: 'multicloud-framework-maven-docker-stage-master/1128/'
+ref: 781e93f42dfd17296f2027547ab7b2286b596650
+containers:
+ - name: 'multicloud/framework'
+ version: '1.8.1'
+ - name: 'multicloud/framework-artifactbroker'
+ version: '1.8.1'
--- /dev/null
+distribution_type: 'container'
+container_release_tag: '1.8.2'
+project: 'multicloud-framework'
+log_dir: 'multicloud-framework-maven-docker-stage-master/1240/'
+ref: b95e90ad1be8a8aa9c80b987d446010a9e34cc7a
+containers:
+ - name: 'multicloud/framework'
+ version: '1.8.2'
+ - name: 'multicloud/framework-artifactbroker'
+ version: '1.8.2'
--- /dev/null
+distribution_type: 'container'
+container_release_tag: '1.9.0'
+project: 'multicloud-framework'
+log_dir: 'multicloud-framework-maven-docker-stage-master/1244/'
+ref: e127b3c32c81390e0c8d928f1266360802fc7071
+containers:
+ - name: 'multicloud/framework'
+ version: '1.9.0'
+ - name: 'multicloud/framework-artifactbroker'
+ version: '1.9.0-SNAPSHOT'
--- /dev/null
+distribution_type: 'maven'
+version: '1.7.0'
+project: 'multicloud-framework'
+log_dir: 'multicloud-framework-maven-stage-master/833/'
# because they are used in Jenkins, whose plug-in doesn't support
major=1
-minor=6
-patch=0
+minor=9
+patch=1
base_version=${major}.${minor}.${patch}