Merge "Build Ranger CLI image and fix bandit error"

This commit is contained in:
Zuul 2018-12-13 15:26:27 +00:00 committed by Gerrit Code Review
commit cbb2fb1e8b
9 changed files with 165 additions and 35 deletions

70
Dockerfile-Ranger-Client Normal file
View File

@ -0,0 +1,70 @@
FROM ubuntu:16.04
#ubuntu environment variables
ENV DEBIAN_FRONTEND noninteractive
ENV container docker
ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8
# define and pass application environment variables
ARG ranger_user
ARG ranger_pass
ARG ranger_tenant
ARG ranger_url
ARG ranger_region
ENV RANGER_USERNAME ${ranger_user:-ranger}
ENV RANGER_PASSWORD ${ranger_pass:-password}
ENV RANGER_TENANT_NAME ${ranger_tenant:-admin}
ENV RANGER_ORM_BASE_URL ${ranger_url:-http://127.0.0.1}
ENV RANGER_AUTH_REGION ${ranger_region:-RegionOne}
# install needed components
RUN apt -qq update && \
apt -y install git \
netcat \
netbase \
openssh-server \
python-minimal \
python-setuptools \
python-pip \
python-dev \
python-dateutil \
ca-certificates \
openstack-pkg-tools \
gcc \
g++ \
libffi-dev \
libssl-dev --no-install-recommends \
libmysqlclient-dev \
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/* \
/usr/share/man \
/usr/share/doc \
/usr/share/doc-base
RUN pip install wheel
COPY . /tmp/ranger
WORKDIR /tmp/ranger
RUN pip install --default-timeout=100 -r requirements.txt
RUN python setup.py install
WORKDIR /tmp
# Create user
RUN useradd -u 1000 -ms /bin/bash ${RANGER_USERNAME}
# Change permissions
RUN mv /tmp/ranger/orm/orm_client /home/${RANGER_USERNAME}/ \
&& rm -rf /tmp/* \
&& chown -R ${RANGER_USERNAME}: /home/${RANGER_USERNAME}/orm_client
# Set work directory
USER ${RANGER_USERNAME}
WORKDIR /home/${RANGER_USERNAME}/orm_client/ormcli

50
Makefile-Ranger-Client Normal file
View File

@ -0,0 +1,50 @@
# Copyright 2018 AT&T Intellectual Property. All other 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.
DOCKER_REGISTRY ?= quay.io
IMAGE_NAME ?= ranger-client
IMAGE_PREFIX ?= attcomdev
IMAGE_TAG ?= ocata
LABEL ?= commit-id
PROXY ?= http://proxy.foo.com:8000
NO_PROXY ?= localhost,127.0.0.1,.svc.cluster.local
USE_PROXY ?= false
IMAGE := ${DOCKER_REGISTRY}/${IMAGE_PREFIX}/${IMAGE_NAME}:${IMAGE_TAG}
# Build ranger Docker image for this project
.PHONY: images
images: build_$(IMAGE_NAME)
# Make targets intended for use by the primary targets above.
.PHONY: build_$(IMAGE_NAME)
build_$(IMAGE_NAME):
ifeq ($(USE_PROXY), true)
docker build --network host -t $(IMAGE) --label $(LABEL) -f Dockerfile \
--build-arg http_proxy=$(PROXY) \
--build-arg https_proxy=$(PROXY) \
--build-arg HTTP_PROXY=$(PROXY) \
--build-arg HTTPS_PROXY=$(PROXY) \
--build-arg no_proxy=$(NO_PROXY) \
--build-arg NO_PROXY=$(NO_PROXY) .
else
docker build --network host -t $(IMAGE) --label $(LABEL) -f Dockerfile .
endif
.PHONY: pep8
pep8:
tox -e pep8

View File

@ -34,8 +34,10 @@ def add_to_parser(service_sub):
default=get_environment_variable('username'))
parser.add_argument('--password', type=str, help='Keystone user password',
default=get_environment_variable('password'))
parser.add_argument('--orm-base-url', type=str, help='ORM base URL',
default=get_environment_variable('orm-base-url'))
parser.add_argument('--rms-base-url', type=str, help='RMS base URL',
default=get_environment_variable('rms-base-url'))
parser.add_argument('--cms-base-url', type=str, help='CMS base URL',
default=get_environment_variable('cms-base-url'))
parser.add_argument('--tracking_id', type=str,
help='"X-RANGER-Tracking-Id" header')
parser.add_argument('--port', type=int, help='port number of CMS server')
@ -376,8 +378,7 @@ def get_token(timeout, args, host):
print message
raise cli_common.MissingArgumentError(message)
keystone_ep = cli_common.get_keystone_ep(
'{}:{}'.format(host, base_config.rms['port']), auth_region)
keystone_ep = cli_common.get_keystone_ep('{}'.format(host), auth_region)
if keystone_ep is None:
raise ConnectionError(
'Failed in get_token, host: {}, region: {}'.format(host,
@ -404,6 +405,7 @@ def get_token(timeout, args, host):
def get_environment_variable(argument):
# The rules are: all caps, underscores instead of dashes and prefixed
environment_variable = 'RANGER_{}'.format(
argument.replace('-', '_').upper())
@ -411,18 +413,19 @@ def get_environment_variable(argument):
def run(args):
host = args.orm_base_url if args.orm_base_url else config.orm_base_url
port = args.port if args.port else 7080
rms_url = args.rms_base_url if args.rms_base_url else base_config.rms['base_url']
host = args.cms_base_url if args.cms_base_url else base_config.cms['base_url']
port = args.port if args.port else base_config.cms['port']
data = args.datafile.read() if 'datafile' in args else '{}'
timeout = args.timeout if args.timeout else 10
rest_cmd, cmd_url = cmd_details(args)
url = '%s:%d/v1/orm/customers' % (host, port,) + cmd_url
url = '%s/v1/orm/customers' % (host) + cmd_url
if args.faceless:
auth_token = auth_region = requester = client = ''
else:
try:
auth_token = get_token(timeout, args, host)
auth_token = get_token(timeout, args, rms_url)
except Exception:
exit(1)
auth_region = globals()['auth_region']

View File

@ -6,5 +6,8 @@ tenant_name = config.CONF.keystone_authtoken.project_name
username = config.CONF.keystone_authtoken.username
password = config.CONF.keystone_authtoken.password
auth_region = config.CONF.cli.base_region
orm_base_url = config.CONF.ranger_url
rms_base_url = config.rms['base_url']
cms_base_url = config.cms['base_url']
fms_base_url = config.fms['base_url']
ims_base_url = config.ims['base_url']
verify = config.CONF.ssl_verify

View File

@ -26,9 +26,6 @@ def add_to_parser(service_sub):
parser.add_argument('--auth-region', type=str,
help='Region used for authentication',
default=get_environment_variable('auth-region'))
parser.add_argument('--orm-base-url', type=str, help='ORM base URL',
default=get_environment_variable('orm-base-url'))
parser.add_argument('--tracking_id', type=str, help='tracking id')
parser.add_argument('--tenant-name', type=str,
help='Keystone user tenant name',
default=get_environment_variable('tenant-name'))
@ -36,6 +33,11 @@ def add_to_parser(service_sub):
default=get_environment_variable('username'))
parser.add_argument('--password', type=str, help='Keystone user password',
default=get_environment_variable('password'))
parser.add_argument('--rms-base-url', type=str, help='RMS base URL',
default=get_environment_variable('rms-base-url'))
parser.add_argument('--fms-base-url', type=str, help='FMS base URL',
default=get_environment_variable('fms-base-url'))
parser.add_argument('--tracking_id', type=str, help='tracking id')
parser.add_argument('--port', type=int, help='port number of FMS server')
parser.add_argument('--timeout', type=int,
help='request timeout in seconds (default: 10)')
@ -334,8 +336,7 @@ def get_token(timeout, args, host):
print message
raise cli_common.MissingArgumentError(message)
keystone_ep = cli_common.get_keystone_ep(
'{}:{}'.format(host, base_config.rms['port']), auth_region)
keystone_ep = cli_common.get_keystone_ep('{}'.format(host), auth_region)
if keystone_ep is None:
raise ConnectionError(
'Failed in get_token, host: {}, region: {}'.format(host,
@ -369,18 +370,19 @@ def get_environment_variable(argument):
def run(args):
host = args.orm_base_url if args.orm_base_url else config.orm_base_url
port = args.port if args.port else 8082
rms_url = args.rms_base_url if args.rms_base_url else base_config.rms['base_url']
host = args.fms_base_url if args.fms_base_url else base_config.fms['base_url']
port = args.port if args.port else base_config.fms['port']
data = args.datafile.read() if 'datafile' in args else '{}'
timeout = args.timeout if args.timeout else 10
rest_cmd, cmd_url = cmd_details(args)
url = '%s:%d/v1/orm/flavors' % (host, port,) + cmd_url
url = '%s/v1/orm/flavors' % (host) + cmd_url
if args.faceless:
auth_token = auth_region = requester = client = ''
else:
try:
auth_token = get_token(timeout, args, host)
auth_token = get_token(timeout, args, rms_url)
except Exception:
exit(1)
auth_region = globals()['auth_region']

View File

@ -34,8 +34,10 @@ def add_to_parser(service_sub):
default=get_environment_variable('username'))
parser.add_argument('--password', type=str, help='Keystone user password',
default=get_environment_variable('password'))
parser.add_argument('--orm-base-url', type=str, help='ORM base URL',
default=get_environment_variable('orm-base-url'))
parser.add_argument('--rms-base-url', type=str, help='RMS base URL',
default=get_environment_variable('rms-base-url'))
parser.add_argument('--ims-base-url', type=str, help='IMS base URL',
default=get_environment_variable('ims-base-url'))
parser.add_argument('--tracking_id', type=str, help='tracking id')
parser.add_argument('--port', type=int, help='port number of IMS server')
parser.add_argument('--timeout', type=int,
@ -226,7 +228,7 @@ def get_token(timeout, args, host):
raise cli_common.MissingArgumentError(message)
keystone_ep = cli_common.get_keystone_ep(
'{}:{}'.format(host, base_config.rms['port']), auth_region)
'{}'.format(host), auth_region)
if keystone_ep is None:
raise ConnectionError(
'Failed in get_token, host: {}, region: {}'.format(host,
@ -323,18 +325,19 @@ def get_environment_variable(argument):
def run(args):
host = args.orm_base_url if args.orm_base_url else config.orm_base_url
port = args.port if args.port else 8084
rms_url = args.rms_base_url if args.rms_base_url else base_config.rms['base_url']
host = args.ims_base_url if args.ims_base_url else base_config.ims['base_url']
port = args.port if args.port else base_config.ims['port']
data = args.datafile.read() if 'datafile' in args else '{}'
timeout = args.timeout if args.timeout else 10
rest_cmd, cmd_url = cmd_details(args)
url = '%s:%d/v1/orm/images' % (host, port,) + cmd_url
url = '%s/v1/orm/images' % (host) + cmd_url
if args.faceless:
auth_token = auth_region = requester = client = ''
else:
try:
auth_token = get_token(timeout, args, host)
auth_token = get_token(timeout, args, rms_url)
except Exception:
exit(1)
auth_region = globals()['auth_region']

View File

@ -32,8 +32,8 @@ def add_to_parser(service_sub):
default=get_environment_variable('username'))
parser.add_argument('--password', type=str, help='Keystone user password',
default=get_environment_variable('password'))
parser.add_argument('--orm-base-url', type=str, help='ORM base URL',
default=get_environment_variable('orm-base-url'))
parser.add_argument('--rms-base-url', type=str, help='RMS base URL',
default=get_environment_variable('rms-base-url'))
parser.add_argument('--tracking_id', type=str, help='tracking id')
parser.add_argument('--port', type=int, help='port number of RMS server')
parser.add_argument('--timeout', type=int,
@ -250,8 +250,7 @@ def get_token(timeout, args, host):
print message
raise cli_common.MissingArgumentError(message)
keystone_ep = cli_common.get_keystone_ep(
'{}:{}'.format(host, base_config.rms['port']), auth_region)
keystone_ep = cli_common.get_keystone_ep('{}'.format(host), auth_region)
if keystone_ep is None:
raise ConnectionError(
'Failed in get_token, host: {}, region: {}'.format(host,
@ -362,12 +361,11 @@ def get_environment_variable(argument):
def run(args):
url_path = get_path(args)
host = args.orm_base_url if args.orm_base_url else config.orm_base_url
port = args.port if args.port else base_config.rms['port']
rms_base_url = args.rms_base_url if args.rms_base_url else base_config.rms['base_url']
data = args.datafile.read() if 'datafile' in args else '{}'
timeout = args.timeout if args.timeout else 10
rest_cmd, cmd_url = cmd_details(args)
url = '%s:%d/%s' % (host, port, url_path) + cmd_url
url = '%s/%s' % (rms_base_url, url_path) + cmd_url
if args.faceless or \
args.subcmd == 'get_region' or \
args.subcmd == 'list_regions' or \
@ -376,7 +374,7 @@ def run(args):
auth_token = auth_region = requester = client = ''
else:
try:
auth_token = get_token(timeout, args, host)
auth_token = get_token(timeout, args, rms_base_url)
except Exception:
exit(1)
auth_region = globals()['auth_region']

View File

@ -1,3 +1,4 @@
import ast
import wsme
from orm.common.orm_common.utils.cross_api_utils import (set_utils_conf,
@ -254,7 +255,7 @@ class Flavor(Model):
if self.series == 'p1':
if {'n0'}.issubset(self.options.keys()) and \
eval(self.options.get('n0').lower().capitalize()):
ast.literal_eval(self.options.get('n0').lower().capitalize()):
vcpu_limit = int(conf.flavor_limits.p1_n0_vcpu_limit)
vram_limit = int(conf.flavor_limits.p1_n0_vram_limit)
else:

View File

@ -223,7 +223,7 @@ class RmsTests(TestCase):
cli = ormcli.Cli()
cli.create_parser()
cli.parse(
'orm rms --faceless --orm-base-url 12.11.10.9 --port 8832'
'orm rms --faceless --rms-base-url 12.11.10.9 --port 8832'
' --timeout 150 get_region zoneone'.split())
resp = self.respond(
{