Add basic auth header for sdc-backend-init python scripts.
Issue-ID: OJSI-273
Signed-off-by: xuegao <xue.gao@intl.att.com>
Change-Id: I3559d5792509db0f65b202a731545083c7c91c96
Signed-off-by: xuegao <xue.gao@intl.att.com>
user: neo4j
password: "12345"
+basicAuth:
+ enabled: false
+ userName: test
+ userPass: test
+ excludedUrls:
+
cassandraConfig:
cassandraHosts: [192.168.33.10]
cassandraPort: 9042
-#
+#BasicAuth
+default['basic_auth']['enabled'] = true
+default['basic_auth'][:user_name] = "testName"
+default['basic_auth'][:user_pass] = "testPass"
+
+require 'base64'
if node['disableHttp']
protocol = "https"
https_flag = "--https"
user_conf_dir = ""
end
+if node['basic_auth']
+ basic_auth_enabled = node['basic_auth']['enabled']
+ basic_auth_user = node['basic_auth']['user_name']
+ basic_auth_pass = node['basic_auth']['user_pass']
+ if basic_auth_enabled
+ basic_auth_config = "--header " + Base64.encode64(basic_auth_user + ":" + basic_auth_pass)
+ else
+ # set default user configuration file
+ basic_auth_config = ""
+ end
+end
+
bash "executing-create_users" do
code <<-EOH
- sdcuserinit -i #{node['Nodes']['BE']} -p #{be_port} #{user_conf_dir} #{https_flag}
+ sdcuserinit -i #{node['Nodes']['BE']} -p #{be_port} #{basic_auth_config} #{user_conf_dir} #{https_flag}
rc=$?
if [[ $rc != 0 ]]; then exit $rc; fi
EOH
bash "executing-create_consumers" do
code <<-EOH
- sdcconsumerinit -i #{node['Nodes']['BE']} -p #{be_port} #{https_flag}
+ sdcconsumerinit -i #{node['Nodes']['BE']} -p #{be_port} #{basic_auth_config} #{https_flag}
rc=$?
if [[ $rc != 0 ]]; then exit $rc; fi
EOH
+require 'base64'
if node['disableHttp']
protocol = "https"
https_flag = "--https"
be_port = node['BE']['http_port']
end
+if node['basic_auth']
+ basic_auth_enabled = node['basic_auth']['enabled']
+ basic_auth_user = node['basic_auth']['user_name']
+ basic_auth_pass = node['basic_auth']['user_pass']
+ if basic_auth_enabled
+ basic_auth_config = "--header " + Base64.encode64(basic_auth_user + ":" + basic_auth_pass)
+ else
+ # set default user configuration file
+ basic_auth_config = ""
+ end
+end
+
bash "executing-check_backend_health" do
code <<-EOH
- sdccheckbackend -i #{node['Nodes']['BE']} -p #{be_port} #{https_flag}
+ sdccheckbackend -i #{node['Nodes']['BE']} -p #{be_port} #{basic_auth_config} #{https_flag}
rc=$?
if [[ $rc != 0 ]]; then exit $rc; fi
EOH
+require 'base64'
be_ip=node['Nodes'][:BE]
if node['disableHttp']
param="-i #{be_ip} -p #{be_port}"
end
+if node['basic_auth']
+ basic_auth_enabled = node['basic_auth']['enabled']
+ basic_auth_user = node['basic_auth']['user_name']
+ basic_auth_pass = node['basic_auth']['user_pass']
+ if basic_auth_enabled
+ basic_auth_config = "--header " + Base64.encode64(basic_auth_user + ":" + basic_auth_pass)
+ else
+ # set default user configuration file
+ basic_auth_config = ""
+ end
+end
cookbook_file "/var/tmp/normatives.tar.gz" do
source "normatives.tar.gz"
end
# add --debug to the sdcinit command to enable debug
cd /var/tmp/normatives/import/tosca
- sdcinit #{param} > /var/lib/jetty/logs/init.log
+ sdcinit #{param} #{basic_auth_config} > /var/lib/jetty/logs/init.log
rc=$?
if [[ $rc != 0 ]]; then exit $rc; fi
default['basic_auth']['enabled'] = false
default['basic_auth'][:user_name] = "testName"
default['basic_auth'][:user_pass] = "testPass"
-default['basic_auth']['excludedUrls'] = "/sdc2/rest/healthCheck,/sdc2/rest/v1/user,/sdc2/rest/v1/user/jh0003,/sdc2/rest/v1/screen,/sdc2/rest/v1/consumers,/sdc2/rest/v1/catalog/uploadType/datatypes,/sdc2/rest/v1/catalog/upload/multipart"
+default['basic_auth']['excludedUrls'] = "/sdc2/rest/healthCheck"
#Cassandra
default['cassandra']['cassandra_port'] = 9042
enabled: <%= @basic_auth_flag %>
userName: <%= @user_name %>
userPass: <%= @user_pass %>
- excludedUrls: "/sdc2/rest/healthCheck,/sdc2/rest/v1/user,/sdc2/rest/v1/user/jh0003,/sdc2/rest/v1/screen,/sdc2/rest/v1/consumers,/sdc2/rest/v1/catalog/uploadType/datatypes,/sdc2/rest/v1/catalog/upload/multipart,/sdc2/rest/v1/catalog/uploadType/capability,/sdc2/rest/v1/catalog/uploadType/relationship,/sdc2/rest/v1/catalog/uploadType/interfaceLifecycle,/sdc2/rest/v1/catalog/uploadType/categories,/sdc2/rest/v1/catalog/uploadType/grouptypes,/sdc2/rest/v1/catalog/uploadType/policytypes,/sdc2/rest/v1/catalog/uploadType/annotationtypes"
+ excludedUrls: "/sdc2/rest/healthCheck"
cassandraConfig:
cassandraHosts: [<%= @cassandra_ip %>]
colors = BColors()
-def check_backend(sdc_be_proxy=None, reply_append_count=1, be_host=None, be_port=None, scheme=None, debug=False):
+def check_backend(sdc_be_proxy=None, reply_append_count=1, be_host=None, be_port=None, header=None, scheme=None, debug=False):
if sdc_be_proxy is None:
- sdc_be_proxy = SdcBeProxy(be_host, be_port, scheme, debug=debug)
+ sdc_be_proxy = SdcBeProxy(be_host, be_port, header, scheme, debug=debug)
for i in range(1, reply_append_count + 1):
if sdc_be_proxy.check_backend() == 200:
return False
-def run(be_host, be_port, protocol):
+def run(be_host, be_port, header, protocol):
if not check_backend(reply_append_count=properties.retry_attempts, be_host=be_host,
- be_port=be_port, scheme=protocol):
+ be_port=be_port, header=header, scheme=protocol):
print('[ERROR]: ' + time.strftime('%Y/%m/%d %H:%M:%S') + colors.FAIL + ' Backend is DOWN :-(' + colors.END_C)
sys.exit()
parser.add_argument('-i', '--ip', required=True)
parser.add_argument('-p', '--port', required=True)
+ parser.add_argument('--header')
parser.add_argument('--https', action='store_true')
args = parser.parse_args()
init_properties(10, 10)
- return [args.ip, args.port, 'https' if args.https else 'http']
+ return [args.ip, args.port, args.header, 'https' if args.https else 'http']
def main():
def process_and_create_normative_element(normative_element,
- scheme=None, be_host=None, be_port=None, admin_user=None, sdc_be_proxy=None,
+ scheme=None, be_host=None, be_port=None, header=None, admin_user=None, sdc_be_proxy=None,
debug=False,
exit_on_success=False):
if sdc_be_proxy is None:
- sdc_be_proxy = SdcBeProxy(be_host, be_port, scheme, admin_user, debug=debug)
+ sdc_be_proxy = SdcBeProxy(be_host, be_port, header, scheme, admin_user, debug=debug)
file_dir, url_suffix, element_name, element_from_name, with_metadata = normative_element.get_parameters()
_create_normative_element(sdc_be_proxy,
def process_and_create_normative_types(normative_type,
- scheme=None, be_host=None, be_port=None, admin_user=None,
+ scheme=None, be_host=None, be_port=None, header=None, admin_user=None,
sdc_be_proxy=None,
update_version=False,
debug=False,
exit_on_success=False):
if sdc_be_proxy is None:
- sdc_be_proxy = SdcBeProxy(be_host, be_port, scheme, admin_user, debug=debug)
+ sdc_be_proxy = SdcBeProxy(be_host, be_port, header, scheme, admin_user, debug=debug)
file_dir, normative_type_list = normative_type.get_parameters()
BODY_SEPARATOR = "\r\n\r\n"
CHARTSET = 'UTF-8'
- def __init__(self, be_ip, be_port, scheme, user_id="jh0003",
+ def __init__(self, be_ip, be_port, header, scheme, user_id="jh0003",
debug=False, connector=None):
if not check_arguments_not_none(be_ip, be_port, scheme, user_id):
raise AttributeError("The be_host, be_port, scheme or admin_user are missing")
url = get_url(be_ip, be_port, scheme)
self.con = connector if connector \
- else CurlConnector(url, user_id, scheme=scheme, debug=debug)
+ else CurlConnector(url, user_id, header, scheme=scheme, debug=debug)
def check_backend(self):
return self.con.get('/sdc2/rest/v1/user/jh0003')
def check_user(self, user_name):
- return self.con.get("/sdc2/rest/v1/user/" + user_name)
+ return self.con.get("/sdc2/rest/v1/user" + user_name)
def create_user(self, first_name, last_name, user_id, email, role):
+
return self.con.post('/sdc2/rest/v1/user', json.dumps({
'firstName': first_name,
'lastName': last_name,
}))
def check_consumer(self, consumer_name):
- return self.con.get("/sdc2/rest/v1/consumers/" + consumer_name)
+ return self.con.get("/sdc2/rest/v1/consumers" + consumer_name)
def create_consumer(self, consumer_name, slat, password):
- return self.con.post("/sdc2/rest/v1/consumers/", json.dumps({
+ return self.con.post("/sdc2/rest/v1/consumers", json.dumps({
'consumerName': consumer_name,
'consumerSalt': slat,
'consumerPassword': password
CONTENT_TYPE_HEADER = "Content-Type: application/json"
ACCEPT_HEADER = "Accept: application/json; charset=UTF-8"
- def __init__(self, url, user_id_header, buffer=None, scheme="http", debug=False):
+ def __init__(self, url, user_id_header, header, buffer=None, scheme="http", debug=False):
self.c = pycurl.Curl()
self.c.setopt(pycurl.HEADER, True)
if not buffer:
self.buffer = BytesIO()
+ if header is None:
+ self.basicauth_header = ""
+ else:
+ self.basicauth_header = "Authorization: Basic " + header
+
self.url = url
self._check_schema(scheme)
self.c.setopt(pycurl.URL, self.url + path)
self.c.setopt(pycurl.HTTPHEADER, [self.user_header,
CurlConnector.CONTENT_TYPE_HEADER,
- CurlConnector.ACCEPT_HEADER])
+ CurlConnector.ACCEPT_HEADER,
+ self.basicauth_header])
+
if with_buffer:
write = self.buffer.write if not buffer else buffer.write
try:
self.c.setopt(pycurl.URL, self.url + path)
self.c.setopt(pycurl.POST, 1)
+
self.c.setopt(pycurl.HTTPHEADER, [self.user_header,
- CurlConnector.CONTENT_TYPE_HEADER,
- CurlConnector.ACCEPT_HEADER])
+ CurlConnector.CONTENT_TYPE_HEADER,
+ CurlConnector.ACCEPT_HEADER,
+ self.basicauth_header])
self.c.setopt(pycurl.POSTFIELDS, data)
try:
self.c.setopt(pycurl.URL, self.url + path)
self.c.setopt(pycurl.POST, 1)
- self.c.setopt(pycurl.HTTPHEADER, [self.user_header])
+ self.c.setopt(pycurl.HTTPHEADER, [self.user_header,
+ self.basicauth_header])
+
self.c.setopt(pycurl.HTTPPOST, post_body)
from sdcBePy.users.run import colors
-def be_consumers_init(be_ip, be_port, protocol, consumer_candidate_list):
- sdc_be_proxy = SdcBeProxy(be_ip, be_port, protocol)
+def be_consumers_init(be_ip, be_port, header, protocol, consumer_candidate_list):
+ sdc_be_proxy = SdcBeProxy(be_ip, be_port, header, protocol)
if check_backend(sdc_be_proxy, properties.retry_attempts):
for consumer in consumer_candidate_list:
if sdc_be_proxy.check_user(consumer.consumer_name) != 200:
def main():
- be_ip, be_port, protocol = get_args()
- be_consumers_init(be_ip, be_port, protocol, get_consumers())
+ be_ip, be_port, header, protocol = get_args()
+ be_consumers_init(be_ip, be_port, header, protocol, get_consumers())
if __name__ == '__main__':
def run(candidate):
- scheme, be_host, be_port, admin_user, _, debug = get_args()
+ scheme, be_host, be_port, header, admin_user, _, debug = get_args()
try:
process_and_create_normative_element(candidate,
- scheme, be_host, be_port, admin_user,
+ scheme, be_host, be_port, header, admin_user,
debug=debug,
exit_on_success=True)
except AttributeError:
def usage():
print(sys.argv[0],
'[-s <scheme> | --scheme=<scheme> ] [-i <be host> | --ip=<be host>] [-p <be port> | '
- '--port=<be port> ] [-u <user userId> | --user=<user userId> ] [-d <true|false> | '
+ '--port=<be port> ] --header=<header> ] [-u <user userId> | --user=<user userId> ] [-d <true|false> | '
'--debug=<true|false>] [-v <true|false> | --updateVersion=<true|false>]')
parser.add_argument('--ip', "-i")
parser.add_argument('--port', "-p")
+ parser.add_argument('--header')
parser.add_argument('--adminUser', "-a")
parser.add_argument('--https', action='store_true')
parser.add_argument('--updateVersion', action='store_false')
args, _ = parser.parse_known_args()
return [args.conf, 'https' if args.https else 'http',
- args.ip, args.port, args.adminUser, args.updateVersion,
+ args.ip, args.port, args.header, args.adminUser, args.updateVersion,
args.debug]
def get_args():
print('Number of arguments:', len(sys.argv), 'arguments.')
- conf_path, scheme, be_host, be_port, admin_user, update_version, debug = parse_param()
+ conf_path, scheme, be_host, be_port, header, admin_user, update_version, debug = parse_param()
defaults = load_be_config(conf_path)
# Use defaults if param not provided by the user
if admin_user is None:
admin_user = defaults["adminUser"]
- print('scheme =', scheme, ',be host =', be_host, ', be port =', be_port, ', user =', admin_user,
+ if header is None:
+ print('scheme =', scheme, ',be host =', be_host, ', be port =', be_port, ', user =', admin_user,
', debug =', debug, ', update_version =', update_version)
+ else:
+ print('scheme =', scheme, ',be host =', be_host, ', be port =', be_port, ', header =', header, ', user =', admin_user,
+ ', debug =', debug, ', update_version =', update_version)
init_properties(defaults["retryTime"], defaults["retryAttempt"], defaults["resourceLen"])
- return scheme, be_host, be_port, admin_user, update_version, debug
+ return scheme, be_host, be_port, header, admin_user, update_version, debug
def parse_and_create_proxy():
- scheme, be_host, be_port, admin_user, update_version, debug = get_args()
+ scheme, be_host, be_port, header, admin_user, update_version, debug = get_args()
if debug is False:
print('Disabling debug mode')
logger.debugFlag = debug
try:
- sdc_be_proxy = SdcBeProxy(be_host, be_port, scheme, admin_user, debug=debug)
+ sdc_be_proxy = SdcBeProxy(be_host, be_port, header, scheme, admin_user, debug=debug)
except AttributeError:
usage()
sys.exit(3)
return json.load(f)
-def be_user_init(be_ip, be_port, protocol, conf_path):
- sdc_be_proxy = SdcBeProxy(be_ip, be_port, protocol)
+def be_user_init(be_ip, be_port, header, protocol, conf_path):
+ sdc_be_proxy = SdcBeProxy(be_ip, be_port, header, protocol)
if check_backend(sdc_be_proxy, properties.retry_attempts):
users = load_users(conf_path)
for user in users:
parser.add_argument('-i', '--ip', required=True)
parser.add_argument('-p', '--port', required=True)
+ parser.add_argument('--header')
parser.add_argument('--https', action='store_true')
path = os.path.dirname(__file__)
parser.add_argument('--conf', default=os.path.join(path, 'data', 'users.json'))
args = parser.parse_args()
init_properties(10, 10)
- return [args.ip, args.port, 'https' if args.https else 'http', args.conf]
+ return [args.ip, args.port, args.header, 'https' if args.https else 'http', args.conf]
def main():
user: neo4j
password: "12345"
+basicAuth:
+ enabled: false
+ userName: test
+ userPass: test
+ excludedUrls:
+
cassandraConfig:
cassandraHosts: ['localhost']
cassandraPort: 9042
</bind>
</volumes>
<wait>
- <time>600000</time>
+ <time>660000</time>
<log>Chef Client finished</log>
</wait>
<network>
default['cassandra']['janusgraph_connection_timeout'] = 10000
#Basicauth
-default['basic_auth']['enabled'] = false
-default['basic_auth'][:user_name] = "userName"
-default['basic_auth'][:user_pass] = "userPass"
-default['basic_auth']['excludedUrls'] = ""
+default['basic_auth']['enabled'] = true
+default['basic_auth'][:user_name] = "testName"
+default['basic_auth'][:user_pass] = "testPass"
+default['basic_auth']['excludedUrls'] = "/v1.0/healthcheck"
#ExternalTesting
default['EXTTEST']['ep1_config'] = "vtp,VTP,true,http://refrepo:8702/onapapi/vnfsdk-marketplace,onap.*"
enabled: <%= @basic_auth_enabled %>
userName: <%= @basic_auth_username %>
userPass: <%= @basic_auth_password %>
- excludedUrls: ""
\ No newline at end of file
+ excludedUrls: "/v1.0/healthcheck"
\ No newline at end of file