summaryrefslogtreecommitdiffstats
path: root/adapter/acumos
diff options
context:
space:
mode:
authorshabs2020 <shabnam.sultana@highstreet-technologies.com>2021-05-05 13:20:45 +0200
committershabs2020 <shabnam.sultana@highstreet-technologies.com>2021-05-06 15:18:43 +0200
commit4a02e289d08e2a9d6203b6e72e2a7c8bd3228070 (patch)
treede60ac89bb63103eb8034c0844cad8bb3563c126 /adapter/acumos
parentfdbd89ed0c57f370f6ba3e6390f4b523c965fb9c (diff)
Enable Adapter to work behind proxy
Adapter is now capable of metadata installation during docker image generation both with and without proxy. Issue-ID: DCAEGEN2-2755 Signed-off-by: shabs2020 <shabnam.sultana@highstreet-technologies.com> Change-Id: Icc428db4afcf71103828683f3ac3b4b6d22ec1d0 Signed-off-by: shabs2020 <shabnam.sultana@highstreet-technologies.com>
Diffstat (limited to 'adapter/acumos')
-rw-r--r--adapter/acumos/Changelog.md3
-rw-r--r--adapter/acumos/aoconversion/docker_gen.py31
-rw-r--r--adapter/acumos/aoconversion/scanner.py7
-rw-r--r--adapter/acumos/pom.xml4
-rw-r--r--adapter/acumos/setup.py4
-rw-r--r--adapter/acumos/tests/test_convert.py4
-rw-r--r--adapter/acumos/tests/test_docker.py13
-rw-r--r--adapter/acumos/tests/test_fed.py4
8 files changed, 51 insertions, 19 deletions
diff --git a/adapter/acumos/Changelog.md b/adapter/acumos/Changelog.md
index 73570fd..736bcea 100644
--- a/adapter/acumos/Changelog.md
+++ b/adapter/acumos/Changelog.md
@@ -3,6 +3,9 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).
+
+## [1.0.5] - 5/05/2021
+ * Enhance adapter to also work behind proxy.
## [1.0.4] - 1/07/2021
* Select metadata.json with additional name search in case of multiple json artifacts (Fix for DCAEGEN2-2578)
## [1.0.3] - 7/28/2020
diff --git a/adapter/acumos/aoconversion/docker_gen.py b/adapter/acumos/aoconversion/docker_gen.py
index bf54cfc..07cc9d7 100644
--- a/adapter/acumos/aoconversion/docker_gen.py
+++ b/adapter/acumos/aoconversion/docker_gen.py
@@ -3,6 +3,8 @@
# =============================================================================
# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
# =============================================================================
+# Copyright (c) 2021 highstreet technologies GmbH. 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
@@ -21,20 +23,26 @@ from docker import APIClient
from aoconversion import exceptions, utils
-def _generate_dockerfile(meta, model_name):
+def _generate_dockerfile(meta, model_name, http_proxy, https_proxy, no_proxy):
"""
bind the templated docker string
"""
- docker_template = """
- FROM python:{VERSION}
+ python_version = meta["runtime"]["version"]
+ docker_template = f'''
+ FROM python:{python_version}
- ENV MODELNAME {MODELNAME}
+ ENV MODELNAME {model_name}
RUN mkdir /app
WORKDIR /app
- ADD ./{MODELNAME} /app/{MODELNAME}
+ ADD ./{model_name} /app/{model_name}
ADD ./requirements.txt /app
-
+ ENV http_proxy={http_proxy}
+ ENV https_proxy={https_proxy}
+ ENV HTTP_PROXY={http_proxy}
+ ENV HTTPS_PROXY={https_proxy}
+ ENV no_proxy={no_proxy}
+ ENV NO_PROXY={no_proxy}
RUN pip install -r /app/requirements.txt && \
pip install acumos_dcae_model_runner
@@ -42,10 +50,10 @@ def _generate_dockerfile(meta, model_name):
EXPOSE $DCAEPORT
ENTRYPOINT ["acumos_dcae_model_runner"]
- CMD ["/app/{MODELNAME}"]
- """
- python_version = meta["runtime"]["version"]
- return docker_template.format(VERSION=python_version, MODELNAME=model_name)
+ CMD ["/app/{model_name}"]
+ '''
+
+ return docker_template
# Public
@@ -70,7 +78,8 @@ def build_and_push_docker(config, model_name, model_version="latest"):
f.write("{0}=={1}\n".format(r["name"], r["version"]))
# generate the dockerfile
- dockerfile = _generate_dockerfile(meta, model_name)
+ print("Http_Proxy: {} & Https_Proxy: {}".format(config.http_proxy, config.https_proxy))
+ dockerfile = _generate_dockerfile(meta, model_name, config.http_proxy, config.https_proxy, config.no_proxy)
# write the dockerfile, will be removed later
with open("{0}/Dockerfile".format(model_repo_path), "w") as f:
diff --git a/adapter/acumos/aoconversion/scanner.py b/adapter/acumos/aoconversion/scanner.py
index cefcc3d..18dd701 100644
--- a/adapter/acumos/aoconversion/scanner.py
+++ b/adapter/acumos/aoconversion/scanner.py
@@ -3,6 +3,8 @@
# =============================================================================
# Copyright (c) 2019-2020 AT&T Intellectual Property. All rights reserved.
# =============================================================================
+# Copyright (c) 2021 highstreet technologies GmbH. 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
@@ -47,7 +49,7 @@ class Config(object):
Configuration parameters as attributes, make sure the required ones are there,
populate defaults.
"""
- def __init__(self, dcaeuser, onboardingurl, onboardinguser, onboardingpass, certfile, dockerregistry, dockeruser, dockerpass, acumosurl=None, interval=900, dockerhost='tcp://localhost:2375', tmpdir='/var/tmp/aoadapter', certverify=True, catalogs=None, port=None, **extras):
+ def __init__(self, dcaeuser, onboardingurl, onboardinguser, onboardingpass, certfile, dockerregistry, dockeruser, dockerpass, http_proxy, https_proxy, no_proxy, acumosurl=None, interval=900, dockerhost='tcp://localhost:2375', tmpdir='/var/tmp/aoadapter', certverify=True, catalogs=None, port=None, **extras):
self.dcaeuser = dcaeuser
def x(fmt, *args, **kwargs):
@@ -64,6 +66,9 @@ class Config(object):
self._dockerpass = dockerpass
self.interval = interval
self.tmpdir = tmpdir
+ self.http_proxy = http_proxy if http_proxy is not None else ""
+ self.https_proxy = https_proxy if http_proxy is not None else ""
+ self.no_proxy = no_proxy if no_proxy is not None else ""
if catalogs is not None and type(catalogs) is not list:
catalogs = [catalogs]
self.catalogs = catalogs
diff --git a/adapter/acumos/pom.xml b/adapter/acumos/pom.xml
index eda0620..f0a6be0 100644
--- a/adapter/acumos/pom.xml
+++ b/adapter/acumos/pom.xml
@@ -5,6 +5,8 @@ org.onap.dcae
================================================================================
Copyright (c) 2019-2020 AT&T Intellectual Property. All rights reserved.
================================================================================
+Copyright (c) 2021 highstreet technologies GmbH. 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
@@ -23,7 +25,7 @@ limitations under the License.
<modelVersion>4.0.0</modelVersion>
<groupId>org.onap.dcaegen2.platform.adapter</groupId>
<artifactId>dcaegen2-platform-adapter-acumos</artifactId>
- <version>1.0.4-SNAPSHOT</version>
+ <version>1.0.5-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<sonar.sources>.</sonar.sources>
diff --git a/adapter/acumos/setup.py b/adapter/acumos/setup.py
index d667f0b..1af4a3f 100644
--- a/adapter/acumos/setup.py
+++ b/adapter/acumos/setup.py
@@ -3,6 +3,8 @@
# =============================================================================
# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
# =============================================================================
+# Copyright (c) 2021 highstreet technologies GmbH. 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
@@ -20,7 +22,7 @@ from setuptools import setup, find_packages
setup(
name="aoconversion",
- version="1.0.4-SNAPSHOT",
+ version="1.0.5-SNAPSHOT",
packages=find_packages(exclude=["tests.*", "tests"]),
author="Tommy Carpenter, Andrew Gauld",
author_email="tommy@research.att.com, agauld@att.com",
diff --git a/adapter/acumos/tests/test_convert.py b/adapter/acumos/tests/test_convert.py
index 780cc55..bb9e73d 100644
--- a/adapter/acumos/tests/test_convert.py
+++ b/adapter/acumos/tests/test_convert.py
@@ -3,6 +3,8 @@
# =============================================================================
# Copyright (c) 2019-2020 AT&T Intellectual Property. All rights reserved.
# =============================================================================
+# Copyright (c) 2021 highstreet technologies GmbH. 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
@@ -27,7 +29,7 @@ from testing_helpers import get_fixture_path
def test_gen_dcae_artifacts_for_model(monkeypatch):
model_repo_path = get_fixture_path('models')
model_name = 'example-model'
- config = aoconversion.scanner.Config(dcaeurl='http://dcaeurl', dcaeuser='dcaeuser', onboardingurl='https://onboarding', onboardinguser='obuser', onboardingpass='obpass', acumosurl='https://acumos', certfile=None, dockerregistry='dockerregistry', dockeruser='registryuser', dockerpass='registrypassword', tmpdir=model_repo_path)
+ config = aoconversion.scanner.Config(dcaeurl='http://dcaeurl', dcaeuser='dcaeuser', onboardingurl='https://onboarding', onboardinguser='obuser', onboardingpass='obpass', acumosurl='https://acumos', certfile=None, dockerregistry='dockerregistry', dockeruser='registryuser', dockerpass='registrypassword', http_proxy='', https_proxy='', no_proxy='', tmpdir=model_repo_path)
spec = {
"self": {
"version": "1.0.0",
diff --git a/adapter/acumos/tests/test_docker.py b/adapter/acumos/tests/test_docker.py
index 2f618e6..bee53a0 100644
--- a/adapter/acumos/tests/test_docker.py
+++ b/adapter/acumos/tests/test_docker.py
@@ -3,6 +3,8 @@
# =============================================================================
# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
# =============================================================================
+# Copyright (c) 2021 highstreet technologies GmbH. 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
@@ -25,7 +27,7 @@ TEST_META = get_json_fixture("models/example-model/metadata.json")
def test_generate_dockerfile():
assert (
- docker_gen._generate_dockerfile(TEST_META, "example-model")
+ docker_gen._generate_dockerfile(TEST_META, "example-model", '', '', '')
== """
FROM python:3.6.8
@@ -35,7 +37,12 @@ def test_generate_dockerfile():
ADD ./example-model /app/example-model
ADD ./requirements.txt /app
-
+ ENV http_proxy=
+ ENV https_proxy=
+ ENV HTTP_PROXY=
+ ENV HTTPS_PROXY=
+ ENV no_proxy=
+ ENV NO_PROXY=
RUN pip install -r /app/requirements.txt && \
pip install acumos_dcae_model_runner
@@ -50,6 +57,6 @@ def test_generate_dockerfile():
def test_build_and_push_docker(monkeypatch):
model_repo_path = get_fixture_path('models')
- config = scanner.Config(dcaeurl='http://dcaeurl', dcaeuser='dcaeuser', onboardingurl='https://onboarding', onboardinguser='obuser', onboardingpass='obpass', acumosurl='https://acumos', certfile=None, dockerregistry='dockerregistry', dockeruser='registryuser', dockerpass='registrypassword', tmpdir=model_repo_path)
+ config = scanner.Config(dcaeurl='http://dcaeurl', dcaeuser='dcaeuser', onboardingurl='https://onboarding', onboardinguser='obuser', onboardingpass='obpass', acumosurl='https://acumos', certfile=None, dockerregistry='dockerregistry', dockeruser='registryuser', dockerpass='registrypassword', http_proxy='', https_proxy='', no_proxy='', tmpdir=model_repo_path)
monkeypatch.setattr(docker_gen, 'APIClient', test_fed._mockdocker.APIClient)
assert(docker_gen.build_and_push_docker(config, 'example-model', model_version="latest") == 'dockerregistry/example-model:latest')
diff --git a/adapter/acumos/tests/test_fed.py b/adapter/acumos/tests/test_fed.py
index c5400a3..f56e297 100644
--- a/adapter/acumos/tests/test_fed.py
+++ b/adapter/acumos/tests/test_fed.py
@@ -3,6 +3,8 @@
# =============================================================================
# Copyright (c) 2019-2020 AT&T Intellectual Property. All rights reserved.
# =============================================================================
+# Copyright (c) 2021 highstreet technologies GmbH. 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
@@ -165,7 +167,7 @@ _mockwebdata = {
def test_aoconversion(mock_schemas, tmpdir, monkeypatch):
- config = aoc_scanner.Config(dcaeurl='http://dcaeurl', dcaeuser='dcaeuser', onboardingurl='https://onboarding', onboardinguser='obuser', onboardingpass='obpass', acumosurl='https://acumos', certfile=None, dockerregistry='dockerregistry', dockeruser='registryuser', dockerpass='registrypassword')
+ config = aoc_scanner.Config(dcaeurl='http://dcaeurl', dcaeuser='dcaeuser', onboardingurl='https://onboarding', onboardinguser='obuser', onboardingpass='obpass', acumosurl='https://acumos', certfile=None, dockerregistry='dockerregistry', dockeruser='registryuser', dockerpass='registrypassword', http_proxy='', https_proxy='', no_proxy='')
monkeypatch.setattr(aoc_docker_gen, 'APIClient', _mockdocker.APIClient)
monkeypatch.setattr(requests, 'get', _mockwww(_mockwebdata))
monkeypatch.setattr(requests, 'post', _mockwww(_mockpostdata))