SuccessConsole Output

Skipping 553 KB.. Full Log
l users"""
     # try:
     check_client_version(ctx.obj, ctx.command.name)
     if filter:
-        filter='&'.join(filter)
+        filter = "&".join(filter)
     resp = ctx.obj.user.list(filter)
     # except ClientException as e:
     #     print(str(e))
     #     exit(1)
-    table = PrettyTable(['name', 'id'])
+    table = PrettyTable(["name", "id"])
     for user in resp:
-        table.add_row([user['username'], user['_id']])
-    table.align = 'l'
+        table.add_row([user["username"], user["_id"]])
+    table.align = "l"
     print(table)
 
 
-@cli_osm.command(name='user-show', short_help='shows the details of a user')
-@click.argument('name')
+@cli_osm.command(name="user-show", short_help="shows the details of a user")
+@click.argument("name")
 @click.pass_context
 def user_show(ctx, name):
     """shows the details of a user
 
     NAME: name or ID of the user
     """
     logger.debug("")
     # try:
     check_client_version(ctx.obj, ctx.command.name)
     resp = ctx.obj.user.get(name)
-    if 'password' in resp:
-        resp['password']='********'
-    # except ClientException as e:
-    #     print(str(e))
-    #     exit(1)
-
-    table = PrettyTable(['key', 'attribute'])
+    if "password" in resp:
+        resp["password"] = "********"
+    # except ClientException as e:
+    #     print(str(e))
+    #     exit(1)
+
+    table = PrettyTable(["key", "attribute"])
     for k, v in resp.items():
         table.add_row([k, json.dumps(v, indent=2)])
-    table.align = 'l'
+    table.align = "l"
     print(table)
 
 
 ####################
 # Fault Management operations
 ####################
 
-@cli_osm.command(name='ns-alarm-create')
-@click.argument('name')
-@click.option('--ns', prompt=True, help='NS instance id or name')
-@click.option('--vnf', prompt=True,
-              help='VNF name (VNF member index as declared in the NSD)')
-@click.option('--vdu', prompt=True,
-              help='VDU name (VDU name as declared in the VNFD)')
-@click.option('--metric', prompt=True,
-              help='Name of the metric (e.g. cpu_utilization)')
-@click.option('--severity', default='WARNING',
-              help='severity of the alarm (WARNING, MINOR, MAJOR, CRITICAL, INDETERMINATE)')
-@click.option('--threshold_value', prompt=True,
-              help='threshold value that, when crossed, an alarm is triggered')
-@click.option('--threshold_operator', prompt=True,
-              help='threshold operator describing the comparison (GE, LE, GT, LT, EQ)')
-@click.option('--statistic', default='AVERAGE',
-              help='statistic (AVERAGE, MINIMUM, MAXIMUM, COUNT, SUM)')
-@click.pass_context
-def ns_alarm_create(ctx, name, ns, vnf, vdu, metric, severity,
-                    threshold_value, threshold_operator, statistic):
+
+@cli_osm.command(name="ns-alarm-create")
+@click.argument("name")
+@click.option("--ns", prompt=True, help="NS instance id or name")
+@click.option(
+    "--vnf", prompt=True, help="VNF name (VNF member index as declared in the NSD)"
+)
+@click.option("--vdu", prompt=True, help="VDU name (VDU name as declared in the VNFD)")
+@click.option("--metric", prompt=True, help="Name of the metric (e.g. cpu_utilization)")
+@click.option(
+    "--severity",
+    default="WARNING",
+    help="severity of the alarm (WARNING, MINOR, MAJOR, CRITICAL, INDETERMINATE)",
+)
+@click.option(
+    "--threshold_value",
+    prompt=True,
+    help="threshold value that, when crossed, an alarm is triggered",
+)
+@click.option(
+    "--threshold_operator",
+    prompt=True,
+    help="threshold operator describing the comparison (GE, LE, GT, LT, EQ)",
+)
+@click.option(
+    "--statistic",
+    default="AVERAGE",
+    help="statistic (AVERAGE, MINIMUM, MAXIMUM, COUNT, SUM)",
+)
+@click.pass_context
+def ns_alarm_create(
+    ctx,
+    name,
+    ns,
+    vnf,
+    vdu,
+    metric,
+    severity,
+    threshold_value,
+    threshold_operator,
+    statistic,
+):
     """creates a new alarm for a NS instance"""
     # TODO: Check how to validate threshold_value.
     # Should it be an integer (1-100), percentage, or decimal (0.01-1.00)?
     logger.debug("")
     # try:
     ns_instance = ctx.obj.ns.get(ns)
     alarm = {}
-    alarm['alarm_name'] = name
-    alarm['ns_id'] = ns_instance['_id']
-    alarm['correlation_id'] = ns_instance['_id']
-    alarm['vnf_member_index'] = vnf
-    alarm['vdu_name'] = vdu
-    alarm['metric_name'] = metric
-    alarm['severity'] = severity
-    alarm['threshold_value'] = int(threshold_value)
-    alarm['operation'] = threshold_operator
-    alarm['statistic'] = statistic
+    alarm["alarm_name"] = name
+    alarm["ns_id"] = ns_instance["_id"]
+    alarm["correlation_id"] = ns_instance["_id"]
+    alarm["vnf_member_index"] = vnf
+    alarm["vdu_name"] = vdu
+    alarm["metric_name"] = metric
+    alarm["severity"] = severity
+    alarm["threshold_value"] = int(threshold_value)
+    alarm["operation"] = threshold_operator
+    alarm["statistic"] = statistic
     check_client_version(ctx.obj, ctx.command.name)
     ctx.obj.ns.create_alarm(alarm)
     # except ClientException as e:
     #     print(str(e))
     #     exit(1)
 
 
-#@cli_osm.command(name='ns-alarm-delete')
-#@click.argument('name')
-#@click.pass_context
-#def ns_alarm_delete(ctx, name):
+# @cli_osm.command(name='ns-alarm-delete')
+# @click.argument('name')
+# @click.pass_context
+# def ns_alarm_delete(ctx, name):
 #    """deletes an alarm
 #
 #    NAME: name of the alarm to be deleted
 #    """
 #    try:
@@ -3767,92 +4649,107 @@
 
 ####################
 # Performance Management operations
 ####################
 
-@cli_osm.command(name='ns-metric-export', short_help='exports a metric to the internal OSM bus, which can be read by other apps')
-@click.option('--ns', prompt=True, help='NS instance id or name')
-@click.option('--vnf', prompt=True,
-              help='VNF name (VNF member index as declared in the NSD)')
-@click.option('--vdu', prompt=True,
-              help='VDU name (VDU name as declared in the VNFD)')
-@click.option('--metric', prompt=True,
-              help='name of the metric (e.g. cpu_utilization)')
-#@click.option('--period', default='1w',
+
+@cli_osm.command(
+    name="ns-metric-export",
+    short_help="exports a metric to the internal OSM bus, which can be read by other apps",
+)
+@click.option("--ns", prompt=True, help="NS instance id or name")
+@click.option(
+    "--vnf", prompt=True, help="VNF name (VNF member index as declared in the NSD)"
+)
+@click.option("--vdu", prompt=True, help="VDU name (VDU name as declared in the VNFD)")
+@click.option("--metric", prompt=True, help="name of the metric (e.g. cpu_utilization)")
+# @click.option('--period', default='1w',
 #              help='metric collection period (e.g. 20s, 30m, 2h, 3d, 1w)')
-@click.option('--interval', help='periodic interval (seconds) to export metrics continuously')
+@click.option(
+    "--interval", help="periodic interval (seconds) to export metrics continuously"
+)
 @click.pass_context
 def ns_metric_export(ctx, ns, vnf, vdu, metric, interval):
     """exports a metric to the internal OSM bus, which can be read by other apps"""
     # TODO: Check how to validate interval.
     # Should it be an integer (seconds), or should a suffix (s,m,h,d,w) also be permitted?
     logger.debug("")
     # try:
     ns_instance = ctx.obj.ns.get(ns)
     metric_data = {}
-    metric_data['ns_id'] = ns_instance['_id']
-    metric_data['correlation_id'] = ns_instance['_id']
-    metric_data['vnf_member_index'] = vnf
-    metric_data['vdu_name'] = vdu
-    metric_data['metric_name'] = metric
-    metric_data['collection_unit'] = 'WEEK'
-    metric_data['collection_period'] = 1
+    metric_data["ns_id"] = ns_instance["_id"]
+    metric_data["correlation_id"] = ns_instance["_id"]
+    metric_data["vnf_member_index"] = vnf
+    metric_data["vdu_name"] = vdu
+    metric_data["metric_name"] = metric
+    metric_data["collection_unit"] = "WEEK"
+    metric_data["collection_period"] = 1
     check_client_version(ctx.obj, ctx.command.name)
     if not interval:
-        print('{}'.format(ctx.obj.ns.export_metric(metric_data)))
+        print("{}".format(ctx.obj.ns.export_metric(metric_data)))
     else:
         i = 1
         while True:
-            print('{} {}'.format(ctx.obj.ns.export_metric(metric_data),i))
+            print("{} {}".format(ctx.obj.ns.export_metric(metric_data), i))
             time.sleep(int(interval))
-            i+=1
+            i += 1
     # except ClientException as e:
     #     print(str(e))
     #     exit(1)
 
 
 ####################
 # Other operations
 ####################
 
-@cli_osm.command(name='version', short_help='shows client and server versions')
+
+@cli_osm.command(name="version", short_help="shows client and server versions")
 @click.pass_context
 def get_version(ctx):
     """shows client and server versions"""
     # try:
     check_client_version(ctx.obj, "version")
-    print ("Server version: {}".format(ctx.obj.get_version()))
-    print ("Client version: {}".format(pkg_resources.get_distribution("osmclient").version))
-    # except ClientException as e:
-    #     print(str(e))
-    #     exit(1)
-
-@cli_osm.command(name='upload-package', short_help='uploads a VNF package or NS package')
-@click.argument('filename')
-@click.option('--skip-charm-build', default=False, is_flag=True,
-              help='the charm will not be compiled, it is assumed to already exist')
+    print("Server version: {}".format(ctx.obj.get_version()))
+    print(
+        "Client version: {}".format(pkg_resources.get_distribution("osmclient").version)
+    )
+    # except ClientException as e:
+    #     print(str(e))
+    #     exit(1)
+
+
+@cli_osm.command(
+    name="upload-package", short_help="uploads a VNF package or NS package"
+)
+@click.argument("filename")
+@click.option(
+    "--skip-charm-build",
+    default=False,
+    is_flag=True,
+    help="the charm will not be compiled, it is assumed to already exist",
+)
 @click.pass_context
 def upload_package(ctx, filename, skip_charm_build):
     """uploads a vnf package or ns package
 
     filename: vnf or ns package folder, or vnf or ns package file (tar.gz)
     """
     logger.debug("")
     # try:
     ctx.obj.package.upload(filename, skip_charm_build=skip_charm_build)
     fullclassname = ctx.obj.__module__ + "." + ctx.obj.__class__.__name__
-    if fullclassname != 'osmclient.sol005.client.Client':
+    if fullclassname != "osmclient.sol005.client.Client":
         ctx.obj.package.wait_for_upload(filename)
     # except ClientException as e:
     #     print(str(e))
     #     exit(1)
 
 
-#@cli_osm.command(name='ns-scaling-show')
-#@click.argument('ns_name')
-#@click.pass_context
-#def show_ns_scaling(ctx, ns_name):
+# @cli_osm.command(name='ns-scaling-show')
+# @click.argument('ns_name')
+# @click.pass_context
+# def show_ns_scaling(ctx, ns_name):
 #    """shows the status of a NS scaling operation
 #
 #    NS_NAME: name of the NS instance being scaled
 #    """
 #    try:
@@ -3887,22 +4784,22 @@
 #                                inst['vnfrs']])
 #    table.align = 'l'
 #    print(table)
 
 
-#@cli_osm.command(name='ns-scale')
-#@click.argument('ns_name')
-#@click.option('--ns_scale_group', prompt=True)
-#@click.option('--index', prompt=True)
-#@click.option('--wait',
+# @cli_osm.command(name='ns-scale')
+# @click.argument('ns_name')
+# @click.option('--ns_scale_group', prompt=True)
+# @click.option('--index', prompt=True)
+# @click.option('--wait',
 #              required=False,
 #              default=False,
 #              is_flag=True,
 #              help='do not return the control immediately, but keep it \
 #              until the operation is completed, or timeout')
-#@click.pass_context
-#def ns_scale(ctx, ns_name, ns_scale_group, index, wait):
+# @click.pass_context
+# def ns_scale(ctx, ns_name, ns_scale_group, index, wait):
 #    """scales NS
 #
 #    NS_NAME: name of the NS instance to be scaled
 #    """
 #    try:
@@ -3911,13 +4808,13 @@
 #    except ClientException as e:
 #        print(str(e))
 #        exit(1)
 
 
-#@cli_osm.command(name='config-agent-list')
-#@click.pass_context
-#def config_agent_list(ctx):
+# @cli_osm.command(name='config-agent-list')
+# @click.pass_context
+# def config_agent_list(ctx):
 #    """list config agents"""
 #    try:
 #        check_client_version(ctx.obj, ctx.command.name, 'v1')
 #    except ClientException as e:
 #        print(str(e))
@@ -3930,14 +4827,14 @@
 #             account['juju']])
 #    table.align = 'l'
 #    print(table)
 
 
-#@cli_osm.command(name='config-agent-delete')
-#@click.argument('name')
-#@click.pass_context
-#def config_agent_delete(ctx, name):
+# @cli_osm.command(name='config-agent-delete')
+# @click.argument('name')
+# @click.pass_context
+# def config_agent_delete(ctx, name):
 #    """deletes a config agent
 #
 #    NAME: name of the config agent to be deleted
 #    """
 #    try:
@@ -3946,137 +4843,164 @@
 #    except ClientException as e:
 #        print(str(e))
 #        exit(1)
 
 
-#@cli_osm.command(name='config-agent-add')
-#@click.option('--name',
+# @cli_osm.command(name='config-agent-add')
+# @click.option('--name',
 #              prompt=True)
-#@click.option('--account_type',
+# @click.option('--account_type',
 #              prompt=True)
-#@click.option('--server',
+# @click.option('--server',
 #              prompt=True)
-#@click.option('--user',
+# @click.option('--user',
 #              prompt=True)
-#@click.option('--secret',
+# @click.option('--secret',
 #              prompt=True,
 #              hide_input=True,
 #              confirmation_prompt=True)
-#@click.pass_context
-#def config_agent_add(ctx, name, account_type, server, user, secret):
+# @click.pass_context
+# def config_agent_add(ctx, name, account_type, server, user, secret):
 #    """adds a config agent"""
 #    try:
 #        check_client_version(ctx.obj, ctx.command.name, 'v1')
 #        ctx.obj.vca.create(name, account_type, server, user, secret)
 #    except ClientException as e:
 #        print(str(e))
 #        exit(1)
 
 
-#@cli_osm.command(name='ro-dump')
-#@click.pass_context
-#def ro_dump(ctx):
+# @cli_osm.command(name='ro-dump')
+# @click.pass_context
+# def ro_dump(ctx):
 #    """shows RO agent information"""
 #    check_client_version(ctx.obj, ctx.command.name, 'v1')
 #    resp = ctx.obj.vim.get_resource_orchestrator()
 #    table = PrettyTable(['key', 'attribute'])
 #    for k, v in list(resp.items()):
 #        table.add_row([k, json.dumps(v, indent=2)])
 #    table.align = 'l'
 #    print(table)
 
 
-#@cli_osm.command(name='vcs-list')
-#@click.pass_context
-#def vcs_list(ctx):
+# @cli_osm.command(name='vcs-list')
+# @click.pass_context
+# def vcs_list(ctx):
 #    check_client_version(ctx.obj, ctx.command.name, 'v1')
 #    resp = ctx.obj.utils.get_vcs_info()
 #    table = PrettyTable(['component name', 'state'])
 #    for component in resp:
 #        table.add_row([component['component_name'], component['state']])
 #    table.align = 'l'
 #    print(table)
 
 
-@cli_osm.command(name='ns-action', short_help='executes an action/primitive over a NS instance')
-@click.argument('ns_name')
-@click.option('--vnf_name', default=None, help='member-vnf-index if the target is a vnf instead of a ns)')
-@click.option('--kdu_name', default=None, help='kdu-name if the target is a kdu)')
-@click.option('--vdu_id', default=None, help='vdu-id if the target is a vdu')
-@click.option('--vdu_count', default=None, type=int, help='number of vdu instance of this vdu_id')
-@click.option('--action_name', prompt=True, help='action name')
-@click.option('--params', default=None, help='action params in YAML/JSON inline string')
-@click.option('--params_file', default=None, help='YAML/JSON file with action params')
-@click.option('--timeout', required=False, default=None, type=int, help='timeout in seconds')
-@click.option('--wait',
-              required=False,
-              default=False,
-              is_flag=True,
-              help='do not return the control immediately, but keep it until the operation is completed, or timeout')
-@click.pass_context
-def ns_action(ctx,
-              ns_name,
-              vnf_name,
-              kdu_name,
-              vdu_id,
-              vdu_count,
-              action_name,
-              params,
-              params_file,
-              timeout,
-              wait):
+@cli_osm.command(
+    name="ns-action", short_help="executes an action/primitive over a NS instance"
+)
+@click.argument("ns_name")
+@click.option(
+    "--vnf_name",
+    default=None,
+    help="member-vnf-index if the target is a vnf instead of a ns)",
+)
+@click.option("--kdu_name", default=None, help="kdu-name if the target is a kdu)")
+@click.option("--vdu_id", default=None, help="vdu-id if the target is a vdu")
+@click.option(
+    "--vdu_count", default=None, type=int, help="number of vdu instance of this vdu_id"
+)
+@click.option("--action_name", prompt=True, help="action name")
+@click.option("--params", default=None, help="action params in YAML/JSON inline string")
+@click.option("--params_file", default=None, help="YAML/JSON file with action params")
+@click.option(
+    "--timeout", required=False, default=None, type=int, help="timeout in seconds"
+)
+@click.option(
+    "--wait",
+    required=False,
+    default=False,
+    is_flag=True,
+    help="do not return the control immediately, but keep it until the operation is completed, or timeout",
+)
+@click.pass_context
+def ns_action(
+    ctx,
+    ns_name,
+    vnf_name,
+    kdu_name,
+    vdu_id,
+    vdu_count,
+    action_name,
+    params,
+    params_file,
+    timeout,
+    wait,
+):
     """executes an action/primitive over a NS instance
 
     NS_NAME: name or ID of the NS instance
     """
     logger.debug("")
     # try:
     check_client_version(ctx.obj, ctx.command.name)
     op_data = {}
     if vnf_name:
-        op_data['member_vnf_index'] = vnf_name
+        op_data["member_vnf_index"] = vnf_name
     if kdu_name:
-        op_data['kdu_name'] = kdu_name
+        op_data["kdu_name"] = kdu_name
     if vdu_id:
-        op_data['vdu_id'] = vdu_id
+        op_data["vdu_id"] = vdu_id
     if vdu_count is not None:
-        op_data['vdu_count_index'] = vdu_count
+        op_data["vdu_count_index"] = vdu_count
     if timeout:
-        op_data['timeout_ns_action'] = timeout
-    op_data['primitive'] = action_name
+        op_data["timeout_ns_action"] = timeout
+    op_data["primitive"] = action_name
     if params_file:
-        with open(params_file, 'r') as pf:
+        with open(params_file, "r") as pf:
             params = pf.read()
     if params:
-        op_data['primitive_params'] = yaml.safe_load(params)
+        op_data["primitive_params"] = yaml.safe_load(params)
     else:
-        op_data['primitive_params'] = {}
-    print(ctx.obj.ns.exec_op(ns_name, op_name='action', op_data=op_data, wait=wait))
-
-    # except ClientException as e:
-    #     print(str(e))
-    #     exit(1)
-
-
-@cli_osm.command(name='vnf-scale', short_help='executes a VNF scale (adding/removing VDUs)')
-@click.argument('ns_name')
-@click.argument('vnf_name')
-@click.option('--scaling-group', prompt=True, help="scaling-group-descriptor name to use")
-@click.option('--scale-in', default=False, is_flag=True, help="performs a scale in operation")
-@click.option('--scale-out', default=False, is_flag=True, help="performs a scale out operation (by default)")
-@click.option('--timeout', required=False, default=None, type=int, help='timeout in seconds')
-@click.option('--wait', required=False, default=False, is_flag=True,
-              help='do not return the control immediately, but keep it until the operation is completed, or timeout')
-@click.pass_context
-def vnf_scale(ctx,
-              ns_name,
-              vnf_name,
-              scaling_group,
-              scale_in,
-              scale_out,
-              timeout,
-              wait):
+        op_data["primitive_params"] = {}
+    print(ctx.obj.ns.exec_op(ns_name, op_name="action", op_data=op_data, wait=wait))
+
+    # except ClientException as e:
+    #     print(str(e))
+    #     exit(1)
+
+
+@cli_osm.command(
+    name="vnf-scale", short_help="executes a VNF scale (adding/removing VDUs)"
+)
+@click.argument("ns_name")
+@click.argument("vnf_name")
+@click.option(
+    "--scaling-group", prompt=True, help="scaling-group-descriptor name to use"
+)
+@click.option(
+    "--scale-in", default=False, is_flag=True, help="performs a scale in operation"
+)
+@click.option(
+    "--scale-out",
+    default=False,
+    is_flag=True,
+    help="performs a scale out operation (by default)",
+)
+@click.option(
+    "--timeout", required=False, default=None, type=int, help="timeout in seconds"
+)
+@click.option(
+    "--wait",
+    required=False,
+    default=False,
+    is_flag=True,
+    help="do not return the control immediately, but keep it until the operation is completed, or timeout",
+)
+@click.pass_context
+def vnf_scale(
+    ctx, ns_name, vnf_name, scaling_group, scale_in, scale_out, timeout, wait
+):
     """
     Executes a VNF scale (adding/removing VDUs)
 
     \b
     NS_NAME: name or ID of the NS instance.
@@ -4085,25 +5009,26 @@
     logger.debug("")
     # try:
     check_client_version(ctx.obj, ctx.command.name)
     if not scale_in and not scale_out:
         scale_out = True
-    ctx.obj.ns.scale_vnf(ns_name, vnf_name, scaling_group, scale_in, scale_out, wait, timeout)
+    ctx.obj.ns.scale_vnf(
+        ns_name, vnf_name, scaling_group, scale_in, scale_out, wait, timeout
+    )
     # except ClientException as e:
     #     print(str(e))
     #     exit(1)
 
 
 ##############################
 # Role Management Operations #
 ##############################
 
-@cli_osm.command(name='role-create', short_help='creates a new role')
-@click.argument('name')
-@click.option('--permissions',
-              default=None,
-              help='role permissions using a dictionary')
+
+@cli_osm.command(name="role-create", short_help="creates a new role")
+@click.argument("name")
+@click.option("--permissions", default=None, help="role permissions using a dictionary")
 @click.pass_context
 def role_create(ctx, name, permissions):
     """
     Creates a new role.
 
@@ -4118,24 +5043,22 @@
     # except ClientException as e:
     #     print(str(e))
     #     exit(1)
 
 
-@cli_osm.command(name='role-update', short_help='updates a role')
-@click.argument('name')
-@click.option('--set-name',
-              default=None,
-              help='change name of rle')
+@cli_osm.command(name="role-update", short_help="updates a role")
+@click.argument("name")
+@click.option("--set-name", default=None, help="change name of rle")
 # @click.option('--permissions',
 #               default=None,
 #               help='provide a yaml format dictionary with incremental changes. Values can be bool or None to delete')
-@click.option('--add',
-              default=None,
-              help='yaml format dictionary with permission: True/False to access grant/denial')
-@click.option('--remove',
-              default=None,
-              help='yaml format list to remove a permission')
+@click.option(
+    "--add",
+    default=None,
+    help="yaml format dictionary with permission: True/False to access grant/denial",
+)
+@click.option("--remove", default=None, help="yaml format list to remove a permission")
 @click.pass_context
 def role_update(ctx, name, set_name, add, remove):
     """
     Updates a role.
 
@@ -4152,12 +5075,12 @@
     # except ClientException as e:
     #     print(str(e))
     #     exit(1)
 
 
-@cli_osm.command(name='role-delete', short_help='deletes a role')
-@click.argument('name')
+@cli_osm.command(name="role-delete", short_help="deletes a role")
+@click.argument("name")
 # @click.option('--force', is_flag=True, help='forces the deletion bypassing pre-conditions')
 @click.pass_context
 def role_delete(ctx, name):
     """
     Deletes a role.
@@ -4172,36 +5095,40 @@
     # except ClientException as e:
     #     print(str(e))
     #     exit(1)
 
 
-@cli_osm.command(name='role-list', short_help='list all roles')
-@click.option('--filter', default=None, multiple=True,
-              help='restricts the list to the projects matching the filter')
+@cli_osm.command(name="role-list", short_help="list all roles")
+@click.option(
+    "--filter",
+    default=None,
+    multiple=True,
+    help="restricts the list to the projects matching the filter",
+)
 @click.pass_context
 def role_list(ctx, filter):
     """
     List all roles.
     """
     logger.debug("")
     # try:
     check_client_version(ctx.obj, ctx.command.name)
     if filter:
-        filter='&'.join(filter)
+        filter = "&".join(filter)
     resp = ctx.obj.role.list(filter)
     # except ClientException as e:
     #     print(str(e))
     #     exit(1)
-    table = PrettyTable(['name', 'id'])
+    table = PrettyTable(["name", "id"])
     for role in resp:
-        table.add_row([role['name'], role['_id']])
-    table.align = 'l'
+        table.add_row([role["name"], role["_id"]])
+    table.align = "l"
     print(table)
 
 
-@cli_osm.command(name='role-show', short_help='show specific role')
-@click.argument('name')
+@cli_osm.command(name="role-show", short_help="show specific role")
+@click.argument("name")
 @click.pass_context
 def role_show(ctx, name):
     """
     Shows the details of a role.
 
@@ -4214,79 +5141,95 @@
     resp = ctx.obj.role.get(name)
     # except ClientException as e:
     #     print(str(e))
     #     exit(1)
 
-    table = PrettyTable(['key', 'attribute'])
+    table = PrettyTable(["key", "attribute"])
     for k, v in resp.items():
         table.add_row([k, json.dumps(v, indent=2)])
-    table.align = 'l'
+    table.align = "l"
     print(table)
 
 
-@cli_osm.command(name='package-create',
-             short_help='Create empty NS package structure')
-@click.argument('package-type')
-@click.argument('package-name')
-@click.option('--base-directory',
-              default='.',
-              help=('(NS/VNF/NST) Set the location for package creation. Default: "."'))
-@click.option('--image',
-              default="image-name",
-              help='(VNF) Set the name of the vdu image. Default "image-name"')
-@click.option('--vdus',
-              default=1,
-              help='(VNF) Set the number of vdus in a VNF. Default 1')
-@click.option('--vcpu',
-              default=1,
-              help='(VNF) Set the number of virtual CPUs in a vdu. Default 1')
-@click.option('--memory',
-              default=1024,
-              help='(VNF) Set the memory size (MB) of the vdu. Default 1024')
-@click.option('--storage',
-              default=10,
-              help='(VNF) Set the disk size (GB) of the vdu. Default 10')
-@click.option('--interfaces',
-              default=0,
-              help='(VNF) Set the number of additional interfaces apart from the management interface. Default 0')
-@click.option('--vendor',
-              default="OSM",
-              help='(NS/VNF) Set the descriptor vendor. Default "OSM"')
-@click.option('--override',
-              default=False,
-              is_flag=True,
-              help='(NS/VNF/NST) Flag for overriding the package if exists.')
-@click.option('--detailed',
-              is_flag=True,
-              default=False,
-              help='(NS/VNF/NST) Flag for generating descriptor .yaml with all possible commented options')
-@click.option('--netslice-subnets',
-              default=1,
-              help='(NST) Number of netslice subnets. Default 1')
-@click.option('--netslice-vlds',
-              default=1,
-              help='(NST) Number of netslice vlds. Default 1')
-@click.option(
-    "--old", default=False, is_flag=True, help="Support flag for old versions of the OSM IM (OSM<9)"
-)
-@click.pass_context
-def package_create(ctx,
-                   package_type,
-                   base_directory,
-                   package_name,
-                   override,
-                   image,
-                   vdus,
-                   vcpu,
-                   memory,
-                   storage,
-                   interfaces,
-                   vendor,
-                   detailed,
-                   netslice_subnets,
-                   netslice_vlds,
-                   old,):
+@cli_osm.command(name="package-create", short_help="Create empty NS package structure")
+@click.argument("package-type")
+@click.argument("package-name")
+@click.option(
+    "--base-directory",
+    default=".",
+    help=('(NS/VNF/NST) Set the location for package creation. Default: "."'),
+)
+@click.option(
+    "--image",
+    default="image-name",
+    help='(VNF) Set the name of the vdu image. Default "image-name"',
+)
+@click.option(
+    "--vdus", default=1, help="(VNF) Set the number of vdus in a VNF. Default 1"
+)
+@click.option(
+    "--vcpu", default=1, help="(VNF) Set the number of virtual CPUs in a vdu. Default 1"
+)
+@click.option(
+    "--memory",
+    default=1024,
+    help="(VNF) Set the memory size (MB) of the vdu. Default 1024",
+)
+@click.option(
+    "--storage", default=10, help="(VNF) Set the disk size (GB) of the vdu. Default 10"
+)
+@click.option(
+    "--interfaces",
+    default=0,
+    help="(VNF) Set the number of additional interfaces apart from the management interface. Default 0",
+)
+@click.option(
+    "--vendor", default="OSM", help='(NS/VNF) Set the descriptor vendor. Default "OSM"'
+)
+@click.option(
+    "--override",
+    default=False,
+    is_flag=True,
+    help="(NS/VNF/NST) Flag for overriding the package if exists.",
+)
+@click.option(
+    "--detailed",
+    is_flag=True,
+    default=False,
+    help="(NS/VNF/NST) Flag for generating descriptor .yaml with all possible commented options",
+)
+@click.option(
+    "--netslice-subnets", default=1, help="(NST) Number of netslice subnets. Default 1"
+)
+@click.option(
+    "--netslice-vlds", default=1, help="(NST) Number of netslice vlds. Default 1"
+)
+@click.option(
+    "--old",
+    default=False,
+    is_flag=True,
+    help="Support flag for old versions of the OSM IM (OSM<9)",
+)
+@click.pass_context
+def package_create(
+    ctx,
+    package_type,
+    base_directory,
+    package_name,
+    override,
+    image,
+    vdus,
+    vcpu,
+    memory,
+    storage,
+    interfaces,
+    vendor,
+    detailed,
+    netslice_subnets,
+    netslice_vlds,
+    old,
+):
     """
     Creates an OSM NS, VNF, NST package
 
     \b
     PACKAGE_TYPE: Package to be created: NS, VNF or NST.
@@ -4294,49 +5237,56 @@
     """
 
     # try:
     logger.debug("")
     check_client_version(ctx.obj, ctx.command.name)
-    print("Creating the {} structure: {}/{}".format(package_type.upper(), base_directory, package_name))
-    resp = ctx.obj.package_tool.create(package_type,
-                                       base_directory,
-                                       package_name,
-                                       override=override,
-                                       image=image,
-                                       vdus=vdus,
-                                       vcpu=vcpu,
-                                       memory=memory,
-                                       storage=storage,
-                                       interfaces=interfaces,
-                                       vendor=vendor,
-                                       detailed=detailed,
-                                       netslice_subnets=netslice_subnets,
-                                       netslice_vlds=netslice_vlds,
-                                       old=old,)
+    print(
+        "Creating the {} structure: {}/{}".format(
+            package_type.upper(), base_directory, package_name
+        )
+    )
+    resp = ctx.obj.package_tool.create(
+        package_type,
+        base_directory,
+        package_name,
+        override=override,
+        image=image,
+        vdus=vdus,
+        vcpu=vcpu,
+        memory=memory,
+        storage=storage,
+        interfaces=interfaces,
+        vendor=vendor,
+        detailed=detailed,
+        netslice_subnets=netslice_subnets,
+        netslice_vlds=netslice_vlds,
+        old=old,
+    )
     print(resp)
     # except ClientException as inst:
     #     print("ERROR: {}".format(inst))
     #     exit(1)
 
-@cli_osm.command(name='package-validate',
-                 short_help='Validate descriptors given a base directory')
-@click.argument('base-directory',
-                default=".",
-                required=False)
-@click.option('--recursive/--no-recursive',
-              default=True,
-              help='The activated recursive option will validate the yaml files'
-                   ' within the indicated directory and in its subdirectories')
-@click.option('--old',
-              is_flag=True,
-              default=False,
-              help='Validates also the descriptors using the previous OSM format (pre SOL006)')
-@click.pass_context
-def package_validate(ctx,
-                     base_directory,
-                     recursive,
-                     old):
+
+@cli_osm.command(
+    name="package-validate", short_help="Validate descriptors given a base directory"
+)
+@click.argument("base-directory", default=".", required=False)
+@click.option(
+    "--recursive/--no-recursive",
+    default=True,
+    help="The activated recursive option will validate the yaml files"
+    " within the indicated directory and in its subdirectories",
+)
+@click.option(
+    "--old",
+    is_flag=True,
+    default=False,
+    help="Validates also the descriptors using the previous OSM format (pre SOL006)",
+)
+@click.pass_context
+def package_validate(ctx, base_directory, recursive, old):
     """
     Validate descriptors given a base directory.
 
     \b
     BASE_DIRECTORY: Base folder for NS, VNF or NST package.
@@ -4347,99 +5297,121 @@
     results = ctx.obj.package_tool.validate(base_directory, recursive, old)
     table = PrettyTable()
     table.field_names = ["TYPE", "PATH", "VALID", "ERROR"]
     # Print the dictionary generated by the validation function
     for result in results:
-        table.add_row([result["type"], result["path"], result["valid"], result["error"]])
+        table.add_row(
+            [result["type"], result["path"], result["valid"], result["error"]]
+        )
     table.sortby = "VALID"
     table.align["PATH"] = "l"
     table.align["TYPE"] = "l"
     table.align["ERROR"] = "l"
     print(table)
     # except ClientException as inst:
     #     print("ERROR: {}".format(inst))
     #     exit(1)
 
-@cli_osm.command(name='package-translate',
-                 short_help='Translate descriptors given a base directory')
-@click.argument('base-directory',
-                default=".",
-                required=False)
-@click.option('--recursive/--no-recursive',
-              default=True,
-              help='The activated recursive option will translate the yaml files'
-                   ' within the indicated directory and in its subdirectories')
-@click.option('--dryrun',
-              is_flag=True,
-              default=False,
-              help='Do not translate yet, only make a dry-run to test translation')
-@click.pass_context
-def package_translate(ctx,
-                     base_directory,
-                     recursive,
-                     dryrun):
+
+@cli_osm.command(
+    name="package-translate", short_help="Translate descriptors given a base directory"
+)
+@click.argument("base-directory", default=".", required=False)
+@click.option(
+    "--recursive/--no-recursive",
+    default=True,
+    help="The activated recursive option will translate the yaml files"
+    " within the indicated directory and in its subdirectories",
+)
+@click.option(
+    "--dryrun",
+    is_flag=True,
+    default=False,
+    help="Do not translate yet, only make a dry-run to test translation",
+)
+@click.pass_context
+def package_translate(ctx, base_directory, recursive, dryrun):
     """
     Translate descriptors given a base directory.
 
     \b
     BASE_DIRECTORY: Stub folder for NS, VNF or NST package.
     """
     logger.debug("")
     check_client_version(ctx.obj, ctx.command.name)
     results = ctx.obj.package_tool.translate(base_directory, recursive, dryrun)
     table = PrettyTable()
-    table.field_names = ["CURRENT TYPE", "NEW TYPE", "PATH", "VALID", "TRANSLATED", "ERROR"]
+    table.field_names = [
+        "CURRENT TYPE",
+        "NEW TYPE",
+        "PATH",
+        "VALID",
+        "TRANSLATED",
+        "ERROR",
+    ]
     # Print the dictionary generated by the validation function
     for result in results:
-        table.add_row([result["current type"], result["new type"], result["path"], result["valid"], result["translated"], result["error"]])
+        table.add_row(
+            [
+                result["current type"],
+                result["new type"],
+                result["path"],
+                result["valid"],
+                result["translated"],
+                result["error"],
+            ]
+        )
     table.sortby = "TRANSLATED"
     table.align["PATH"] = "l"
     table.align["TYPE"] = "l"
     table.align["ERROR"] = "l"
     print(table)
     # except ClientException as inst:
     #     print("ERROR: {}".format(inst))
     #     exit(1)
 
-@cli_osm.command(name='package-build',
-             short_help='Build the tar.gz of the package')
-@click.argument('package-folder')
-@click.option('--skip-validation',
-              default=False,
-              is_flag=True,
-              help='skip package validation')
-@click.option('--skip-charm-build', default=False, is_flag=True,
-              help='the charm will not be compiled, it is assumed to already exist')
-@click.pass_context
-def package_build(ctx,
-                  package_folder,
-                  skip_validation,
-                  skip_charm_build):
+
+@cli_osm.command(name="package-build", short_help="Build the tar.gz of the package")
+@click.argument("package-folder")
+@click.option(
+    "--skip-validation", default=False, is_flag=True, help="skip package validation"
+)
+@click.option(
+    "--skip-charm-build",
+    default=False,
+    is_flag=True,
+    help="the charm will not be compiled, it is assumed to already exist",
+)
+@click.pass_context
+def package_build(ctx, package_folder, skip_validation, skip_charm_build):
     """
     Build the package NS, VNF given the package_folder.
 
     \b
     PACKAGE_FOLDER: Folder of the NS, VNF or NST to be packaged
     """
     # try:
     logger.debug("")
     check_client_version(ctx.obj, ctx.command.name)
-    results = ctx.obj.package_tool.build(package_folder,
-                                         skip_validation=skip_validation,
-                                         skip_charm_build=skip_charm_build)
+    results = ctx.obj.package_tool.build(
+        package_folder,
+        skip_validation=skip_validation,
+        skip_charm_build=skip_charm_build,
+    )
     print(results)
     # except ClientException as inst:
     #     print("ERROR: {}".format(inst))
     #     exit(1)
 
-@cli_osm.command(name='descriptor-translate',
-                 short_help='Translate input descriptor file from Rel EIGHT OSM descriptors to SOL006 and prints in standard output')
-@click.argument('descriptor-file',
-                required=True)
-@click.pass_context
-def descriptor_translate(ctx,
-                         descriptor_file):
+
+@cli_osm.command(
+    name="descriptor-translate",
+    short_help="Translate input descriptor file from Rel EIGHT OSM descriptors to SOL006 and prints in standard output",
+)
+@click.argument("descriptor-file", required=True)
+@click.pass_context
+def descriptor_translate(ctx, descriptor_file):
     """
     Translate input descriptor.
 
     \b
     DESCRIPTOR_FILE: Descriptor file for NS, VNF or Network Slice.
@@ -4454,11 +5426,13 @@
     try:
         cli_osm()
         exit(0)
     except pycurl.error as exc:
         print(exc)
-        print('Maybe "--hostname" option or OSM_HOSTNAME environment variable needs to be specified')
+        print(
+            'Maybe "--hostname" option or OSM_HOSTNAME environment variable needs to be specified'
+        )
     except ClientException as exc:
         print("ERROR: {}".format(exc))
     except (FileNotFoundError, PermissionError) as exc:
         print("Cannot open file: {}".format(exc))
     except yaml.YAMLError as exc:
@@ -4466,8 +5440,7 @@
     exit(1)
     # TODO capture other controlled exceptions here
     # TODO remove the ClientException captures from all places, unless they do something different
 
 
-if __name__ == '__main__':
+if __name__ == "__main__":
     cli()
-
would reformat osmclient/scripts/osm.py
Oh no! 💥 💔 💥
41 files would be reformatted, 7 files would be left unchanged.
cover create: /tmp/.tox/cover
cover installdeps: -r/opt/jenkins/workspace/osmclient-stage_2-merge_v9.0/requirements.txt, -r/opt/jenkins/workspace/osmclient-stage_2-merge_v9.0/requirements-dev.txt, -r/opt/jenkins/workspace/osmclient-stage_2-merge_v9.0/requirements-test.txt
cover develop-inst: /opt/jenkins/workspace/osmclient-stage_2-merge_v9.0
cover installed: bitarray==2.3.4,certifi==2020.12.5,chardet==4.0.0,click==7.1.2,coverage==5.5,enum34==1.1.10,idna==2.10,importlib-metadata==4.8.2,Jinja2==2.11.3,lxml==4.7.1,MarkupSafe==1.1.1,mock==4.0.3,nose2==0.10.0,osm-im @ git+https://osm.etsi.org/gerrit/osm/IM.git@35517bbfdb9b9e5e26ca1909d9ecf6398a8bb062,-e git+https://osm.etsi.org/gerrit/osm/osmclient.git@1cbff09ebd242dcba9e0011c083e13e5623f1f5d#egg=osmclient,packaging==20.9,prettytable==2.1.0,pyang==2.5.2,pyangbind==0.8.1,pycurl==7.43.0.6,pyparsing==2.4.7,python-magic==0.4.22,PyYAML==5.4.1,regex==2021.11.10,requests==2.25.1,six==1.16.0,typing_extensions==4.0.1,urllib3==1.26.4,verboselogs==1.7,wcwidth==0.2.5,zipp==3.6.0
cover run-test-pre: PYTHONHASHSEED='1630188128'
cover run-test: commands[0] | sh -c 'rm -f nosetests.xml'
cover run-test: commands[1] | coverage erase
cover run-test: commands[2] | nose2 -C --coverage osmclient
........................
----------------------------------------------------------------------
Ran 24 tests in 10.068s

OK
Name                                     Stmts   Miss  Cover
------------------------------------------------------------
osmclient/__init__.py                        0      0   100%
osmclient/client.py                         32     32     0%
osmclient/common/__init__.py                 0      0   100%
osmclient/common/exceptions.py               6      0   100%
osmclient/common/http.py                    67     39    42%
osmclient/common/package_tool.py           344    304    12%
osmclient/common/test/test_utils.py         36      0   100%
osmclient/common/utils.py                   62     39    37%
osmclient/common/wait.py                    84     84     0%
osmclient/scripts/__init__.py                0      0   100%
osmclient/scripts/osm.py                  2002   2002     0%
osmclient/sol005/__init__.py                 0      0   100%
osmclient/sol005/client.py                  95     95     0%
osmclient/sol005/http.py                   151    151     0%
osmclient/sol005/k8scluster.py              74     74     0%
osmclient/sol005/ns.py                     296    296     0%
osmclient/sol005/nsd.py                    123    123     0%
osmclient/sol005/nsi.py                    209    209     0%
osmclient/sol005/nst.py                    128    128     0%
osmclient/sol005/osmrepo.py                309    259    16%
osmclient/sol005/package.py                 62     62     0%
osmclient/sol005/pdud.py                    80     80     0%
osmclient/sol005/project.py                 74     74     0%
osmclient/sol005/repo.py                    69     56    19%
osmclient/sol005/role.py                   117    117     0%
osmclient/sol005/sdncontroller.py           97     97     0%
osmclient/sol005/tests/test_osmrepo.py      13      0   100%
osmclient/sol005/user.py                   124    124     0%
osmclient/sol005/vim.py                    152    152     0%
osmclient/sol005/vnf.py                     56     56     0%
osmclient/sol005/vnfd.py                   194    194     0%
osmclient/sol005/wim.py                    142    142     0%
osmclient/v1/__init__.py                     0      0   100%
osmclient/v1/client.py                      55      9    84%
osmclient/v1/key.py                         18     18     0%
osmclient/v1/ns.py                         118     89    25%
osmclient/v1/nsd.py                         27      8    70%
osmclient/v1/package.py                     34     17    50%
osmclient/v1/tests/test_ns.py               22      0   100%
osmclient/v1/tests/test_nsd.py              20      1    95%
osmclient/v1/tests/test_package.py          15      0   100%
osmclient/v1/tests/test_vnf.py              26      0   100%
osmclient/v1/tests/test_vnfd.py             20      1    95%
osmclient/v1/utils.py                        9      4    56%
osmclient/v1/vca.py                         27     18    33%
osmclient/v1/vim.py                        184    162    12%
osmclient/v1/vnf.py                         24      3    88%
osmclient/v1/vnfd.py                        25      6    76%
------------------------------------------------------------
TOTAL                                     5822   5325     9%

cover run-test: commands[3] | coverage report '--omit=*tests*'
Name                                  Stmts   Miss  Cover
---------------------------------------------------------
osmclient/__init__.py                     0      0   100%
osmclient/client.py                      32     32     0%
osmclient/common/__init__.py              0      0   100%
osmclient/common/exceptions.py            6      0   100%
osmclient/common/http.py                 67     39    42%
osmclient/common/package_tool.py        344    304    12%
osmclient/common/test/test_utils.py      36      0   100%
osmclient/common/utils.py                62     39    37%
osmclient/common/wait.py                 84     84     0%
osmclient/scripts/__init__.py             0      0   100%
osmclient/scripts/osm.py               2002   2002     0%
osmclient/sol005/__init__.py              0      0   100%
osmclient/sol005/client.py               95     95     0%
osmclient/sol005/http.py                151    151     0%
osmclient/sol005/k8scluster.py           74     74     0%
osmclient/sol005/ns.py                  296    296     0%
osmclient/sol005/nsd.py                 123    123     0%
osmclient/sol005/nsi.py                 209    209     0%
osmclient/sol005/nst.py                 128    128     0%
osmclient/sol005/osmrepo.py             309    259    16%
osmclient/sol005/package.py              62     62     0%
osmclient/sol005/pdud.py                 80     80     0%
osmclient/sol005/project.py              74     74     0%
osmclient/sol005/repo.py                 69     56    19%
osmclient/sol005/role.py                117    117     0%
osmclient/sol005/sdncontroller.py        97     97     0%
osmclient/sol005/user.py                124    124     0%
osmclient/sol005/vim.py                 152    152     0%
osmclient/sol005/vnf.py                  56     56     0%
osmclient/sol005/vnfd.py                194    194     0%
osmclient/sol005/wim.py                 142    142     0%
osmclient/v1/__init__.py                  0      0   100%
osmclient/v1/client.py                   55      9    84%
osmclient/v1/key.py                      18     18     0%
osmclient/v1/ns.py                      118     89    25%
osmclient/v1/nsd.py                      27      8    70%
osmclient/v1/package.py                  34     17    50%
osmclient/v1/utils.py                     9      4    56%
osmclient/v1/vca.py                      27     18    33%
osmclient/v1/vim.py                     184    162    12%
osmclient/v1/vnf.py                      24      3    88%
osmclient/v1/vnfd.py                     25      6    76%
---------------------------------------------------------
TOTAL                                  5706   5323     7%
cover run-test: commands[4] | coverage html -d ./cover '--omit=*tests*'
cover run-test: commands[5] | coverage xml -o coverage.xml '--omit=*tests*'
flake8 create: /tmp/.tox/flake8
flake8 installdeps: flake8
flake8 develop-inst: /opt/jenkins/workspace/osmclient-stage_2-merge_v9.0
flake8 installed: flake8==4.0.1,importlib-metadata==4.2.0,mccabe==0.6.1,-e git+https://osm.etsi.org/gerrit/osm/osmclient.git@1cbff09ebd242dcba9e0011c083e13e5623f1f5d#egg=osmclient,pycodestyle==2.8.0,pyflakes==2.4.0,typing_extensions==4.0.1,zipp==3.6.0
flake8 run-test-pre: PYTHONHASHSEED='1630188128'
flake8 run-test: commands[0] | - flake8 osmclient/ setup.py
osmclient/client.py:38:35: E231 missing whitespace after ','
    verbose = kwargs.get('verbose',0)
                                  ^
osmclient/client.py:39:15: E225 missing whitespace around operator
    if verbose>0:
              ^
osmclient/client.py:41:9: E265 block comment should start with '# '
        #handler = logging.StreamHandler()
        ^
osmclient/client.py:43:9: E265 block comment should start with '# '
        #logger.addHandler(handler)
        ^
osmclient/client.py:44:19: E225 missing whitespace around operator
        if verbose==1:
                  ^
osmclient/client.py:46:21: E225 missing whitespace around operator
        elif verbose==2:
                    ^
osmclient/client.py:48:21: E225 missing whitespace around operator
        elif verbose>2:
                    ^
osmclient/scripts/osm.py:40:1: E302 expected 2 blank lines, found 1
def wrap_text(text, width):
^
osmclient/scripts/osm.py:47:4: E111 indentation is not a multiple of 4
   if len(text) > length:
   ^
osmclient/scripts/osm.py:48:8: E111 indentation is not a multiple of 4
       return text[:(length - 3)] + '...'
       ^
osmclient/scripts/osm.py:49:4: E111 indentation is not a multiple of 4
   else:
   ^
osmclient/scripts/osm.py:50:8: E111 indentation is not a multiple of 4
       return text
       ^
osmclient/scripts/osm.py:100:44: W504 line break after binary operator
              help='hostname of server.  ' +
                                           ^
osmclient/scripts/osm.py:102:1: E265 block comment should start with '# '
#@click.option('--sol005/--no-sol005',
^
osmclient/scripts/osm.py:110:49: W504 line break after binary operator
              help='user (defaults to admin). ' +
                                                ^
osmclient/scripts/osm.py:115:53: W504 line break after binary operator
              help='password (defaults to admin). ' +
                                                    ^
osmclient/scripts/osm.py:120:52: W504 line break after binary operator
              help='project (defaults to admin). ' +
                                                   ^
osmclient/scripts/osm.py:133:90: W504 line break after binary operator
              help='project domain name for keystone authentication (default to None). ' +
                                                                                         ^
osmclient/scripts/osm.py:138:87: W504 line break after binary operator
              help='user domain name for keystone authentication (default to None). ' +
                                                                                      ^
osmclient/scripts/osm.py:140:1: E265 block comment should start with '# '
#@click.option('--so-port',
^
osmclient/scripts/osm.py:145:1: E265 block comment should start with '# '
#@click.option('--so-project',
^
osmclient/scripts/osm.py:150:1: E265 block comment should start with '# '
#@click.option('--ro-hostname',
^
osmclient/scripts/osm.py:155:1: E265 block comment should start with '# '
#@click.option('--ro-port',
^
osmclient/scripts/osm.py:166:55: W504 line break after binary operator
            "either hostname option or OSM_HOSTNAME " +
                                                      ^
osmclient/scripts/osm.py:253:9: E265 block comment should start with '# '
        #Nets
        ^
osmclient/scripts/osm.py:259:42: E231 missing whitespace after ','
        net_list = status_dict.get('nets',[])
                                         ^
osmclient/scripts/osm.py:265:46: E225 missing whitespace around operator
                status_nets[net['status']] +=1
                                             ^
osmclient/scripts/osm.py:267:14: E231 missing whitespace after ','
        for k,v in status_nets.items():
             ^
osmclient/scripts/osm.py:268:41: E231 missing whitespace after ','
            message += "{}:{},".format(k,v)
                                        ^
osmclient/scripts/osm.py:271:9: E265 block comment should start with '# '
        #VMs and VNFs
        ^
osmclient/scripts/osm.py:285:48: E225 missing whitespace around operator
                    status_vms[vm['status']] +=1
                                               ^
osmclient/scripts/osm.py:291:14: E231 missing whitespace after ','
        for k,v in status_vms.items():
             ^
osmclient/scripts/osm.py:292:41: E231 missing whitespace after ','
            message += "{}:{},".format(k,v)
                                        ^
osmclient/scripts/osm.py:296:14: E231 missing whitespace after ','
        for k,v in status_vnfs.items():
             ^
osmclient/scripts/osm.py:299:19: E231 missing whitespace after ','
            for k2,v2 in v.items():
                  ^
osmclient/scripts/osm.py:300:46: E231 missing whitespace after ','
                message += "{}:{},".format(k2,v2)
                                             ^
osmclient/scripts/osm.py:326:22: E231 missing whitespace after ','
                for k,v in status_ee[elementType].items():
                     ^
osmclient/scripts/osm.py:327:49: E231 missing whitespace after ','
                    message += "{}:{},".format(k,v)
                                                ^
osmclient/scripts/osm.py:337:15: E225 missing whitespace around operator
        filter='&'.join(filter)
              ^
osmclient/scripts/osm.py:343:9: E122 continuation line missing indentation or outdented
        ['ns instance name',
        ^
osmclient/scripts/osm.py:356:9: E722 do not use bare 'except'
        except:
        ^
osmclient/scripts/osm.py:360:9: E122 continuation line missing indentation or outdented
        ['ns instance name',
        ^
osmclient/scripts/osm.py:379:17: E265 block comment should start with '# '
                #project = '{} ({})'.format(project_name, project_id)
                ^
osmclient/scripts/osm.py:384:17: E265 block comment should start with '# '
                #vim = '{} ({})'.format(vim_name, vim_id)
                ^
osmclient/scripts/osm.py:387:77: E231 missing whitespace after ','
                current_operation = "{} ({})".format(nsr['currentOperation'],nsr['currentOperationID'])
                                                                            ^
osmclient/scripts/osm.py:389:91: E231 missing whitespace after ','
                current_operation = "{} ({})".format(nsr['_admin'].get('current-operation','-'), nsr['_admin']['nslcmop'])
                                                                                          ^
osmclient/scripts/osm.py:411:18: E126 continuation line over-indented for hanging indent
                 [nsr_name,
                 ^
osmclient/scripts/osm.py:412:18: E128 continuation line under-indented for visual indent
                 nsr_id,
                 ^
osmclient/scripts/osm.py:413:18: E128 continuation line under-indented for visual indent
                 date,
                 ^
osmclient/scripts/osm.py:414:18: E128 continuation line under-indented for visual indent
                 ns_state,
                 ^
osmclient/scripts/osm.py:415:18: E128 continuation line under-indented for visual indent
                 current_operation,
                 ^
osmclient/scripts/osm.py:416:18: E128 continuation line under-indented for visual indent
                 wrap_text(text=error_details,width=40),
                 ^
osmclient/scripts/osm.py:416:46: E231 missing whitespace after ','
                 wrap_text(text=error_details,width=40),
                                             ^
osmclient/scripts/osm.py:417:18: E128 continuation line under-indented for visual indent
                 project,
                 ^
osmclient/scripts/osm.py:418:18: E128 continuation line under-indented for visual indent
                 vim,
                 ^
osmclient/scripts/osm.py:419:18: E128 continuation line under-indented for visual indent
                 deployment_status,
                 ^
osmclient/scripts/osm.py:420:18: E128 continuation line under-indented for visual indent
                 config_status])
                 ^
osmclient/scripts/osm.py:423:18: E126 continuation line over-indented for hanging indent
                 [nsr_name,
                 ^
osmclient/scripts/osm.py:424:18: E128 continuation line under-indented for visual indent
                 nsr_id,
                 ^
osmclient/scripts/osm.py:425:18: E128 continuation line under-indented for visual indent
                 date,
                 ^
osmclient/scripts/osm.py:426:18: E128 continuation line under-indented for visual indent
                 ns_state,
                 ^
osmclient/scripts/osm.py:427:18: E128 continuation line under-indented for visual indent
                 current_operation,
                 ^
osmclient/scripts/osm.py:428:18: E128 continuation line under-indented for visual indent
                 wrap_text(text=error_details,width=40)])
                 ^
osmclient/scripts/osm.py:428:46: E231 missing whitespace after ','
                 wrap_text(text=error_details,width=40)])
                                             ^
osmclient/scripts/osm.py:434:1: E302 expected 2 blank lines, found 1
def nsd_list(ctx, filter, long):
^
osmclient/scripts/osm.py:438:15: E225 missing whitespace around operator
        filter='&'.join(filter)
              ^
osmclient/scripts/osm.py:453:64: E231 missing whitespace after ','
                onb_state = nsd['_admin'].get('onboardingState','-')
                                                               ^
osmclient/scripts/osm.py:454:64: E231 missing whitespace after ','
                op_state = nsd['_admin'].get('operationalState','-')
                                                               ^
osmclient/scripts/osm.py:455:61: E231 missing whitespace after ','
                usage_state = nsd['_admin'].get('usageState','-')
                                                            ^
osmclient/scripts/osm.py:498:46: E231 missing whitespace after ','
        name = vnfd.get('id', vnfd.get('name','-'))
                                             ^
osmclient/scripts/osm.py:511:1: E302 expected 2 blank lines, found 1
def vnfd_list(ctx, nf_type, filter, long):
^
osmclient/scripts/osm.py:518:15: E225 missing whitespace around operator
        filter='&'.join(filter)
              ^
osmclient/scripts/osm.py:541:35: E127 continuation line over-indented for visual indent
                                  'usage state', 'date', 'last update'])
                                  ^
osmclient/scripts/osm.py:545:50: E231 missing whitespace after ','
            name = vnfd.get('id', vnfd.get('name','-'))
                                                 ^
osmclient/scripts/osm.py:548:65: E231 missing whitespace after ','
                onb_state = vnfd['_admin'].get('onboardingState','-')
                                                                ^
osmclient/scripts/osm.py:549:65: E231 missing whitespace after ','
                op_state = vnfd['_admin'].get('operationalState','-')
                                                                ^
osmclient/scripts/osm.py:552:62: E231 missing whitespace after ','
                usage_state = vnfd['_admin'].get('usageState','-')
                                                             ^
osmclient/scripts/osm.py:555:129: E501 line too long (137 > 128 characters)
                table.add_row([name, vnfd['_id'], descriptor_type, vendor, version, onb_state, op_state, usage_state, date, last_update])
                                                                                                                                ^
osmclient/scripts/osm.py:619:1: E302 expected 2 blank lines, found 1
@cli_osm.command(name='nfpkg-repo-list', short_help='list all xNF from OSM repositories')
^
osmclient/scripts/osm.py:638:19: E225 missing whitespace around operator
            filter='&'.join(filter)
                  ^
osmclient/scripts/osm.py:695:1: E302 expected 2 blank lines, found 1
@cli_osm.command(name='nsd-repo-list', short_help='list all NS from OSM repositories')
^
osmclient/scripts/osm.py:707:1: E302 expected 2 blank lines, found 1
@cli_osm.command(name='nspkg-repo-list', short_help='list all NS from OSM repositories')
^
osmclient/scripts/osm.py:719:1: E302 expected 2 blank lines, found 1
@cli_osm.command(name='nf-list', short_help='list all NF instances')
^
osmclient/scripts/osm.py:788:38: E225 missing whitespace around operator
        if params['lcmOperationType']=='instantiate':
                                     ^
osmclient/scripts/osm.py:793:40: E225 missing whitespace around operator
        elif params['lcmOperationType']=='action':
                                       ^
osmclient/scripts/osm.py:812:5: E265 block comment should start with '# '
    #print(yaml.safe_dump(resp))
    ^
osmclient/scripts/osm.py:815:34: E225 missing whitespace around operator
        if op['lcmOperationType']=='action':
                                 ^
osmclient/scripts/osm.py:825:43: E231 missing whitespace after ','
            detail = op.get('errorMessage','-')
                                          ^
osmclient/scripts/osm.py:832:89: E231 missing whitespace after ','
                           wrap_text(text=json.dumps(formatParams(op['operationParams']),indent=2),width=50),
                                                                                        ^
osmclient/scripts/osm.py:832:99: E231 missing whitespace after ','
                           wrap_text(text=json.dumps(formatParams(op['operationParams']),indent=2),width=50),
                                                                                                  ^
osmclient/scripts/osm.py:836:49: E231 missing whitespace after ','
                           wrap_text(text=detail,width=50)])
                                                ^
osmclient/scripts/osm.py:839:83: E231 missing whitespace after ','
                           op['operationState'], date, wrap_text(text=detail or "",width=50)])
                                                                                  ^
osmclient/scripts/osm.py:850:15: E225 missing whitespace around operator
        filter='&'.join(filter)
              ^
osmclient/scripts/osm.py:904:15: E225 missing whitespace around operator
        filter='&'.join(filter)
              ^
osmclient/scripts/osm.py:966:129: E501 line too long (132 > 128 characters)
@cli_osm.command(name='netslice-instance-op-list', short_help='shows the history of operations over a Network Slice Instance (NSI)')
                                                                                                                                ^
osmclient/scripts/osm.py:988:15: E225 missing whitespace around operator
        filter='&'.join(filter)
              ^
osmclient/scripts/osm.py:1035:65: E231 missing whitespace after ','
        table.add_row([k, wrap_text(text=json.dumps(v, indent=2),width=100)])
                                                                ^
osmclient/scripts/osm.py:1083:65: E231 missing whitespace after ','
        table.add_row([k, wrap_text(text=json.dumps(v, indent=2),width=100)])
                                                                ^
osmclient/scripts/osm.py:1091:15: E225 missing whitespace around operator
        filter='&'.join(filter)
              ^
osmclient/scripts/osm.py:1140:1: E302 expected 2 blank lines, found 1
@cli_osm.command(name='vnfpkg-repo-show', short_help='shows the details of a NF package in an OSM repository')
^
osmclient/scripts/osm.py:1183:1: E302 expected 2 blank lines, found 1
@cli_osm.command(name='nspkg-repo-show', short_help='shows the details of a NS package in an OSM repository')
^
osmclient/scripts/osm.py:1268:69: E231 missing whitespace after ','
            table.add_row([k, wrap_text(text=json.dumps(v, indent=2),width=100)])
                                                                    ^
osmclient/scripts/osm.py:1276:68: E231 missing whitespace after ','
                table.add_row([k, wrap_text(json.dumps(v, indent=2),width=100)])
                                                                   ^
osmclient/scripts/osm.py:1300:13: E122 continuation line missing indentation or outdented
            if "namespace" in op_status and "info" in op_status and \
            "last_deployed" in op_status["info"] and "status" in op_status["info"] and \
            "code" in op_status["info"]["status"] and "resources" in op_status["info"]["status"] and \
            "seconds" in op_status["info"]["last_deployed"]:
            ^
osmclient/scripts/osm.py:1301:13: E122 continuation line missing indentation or outdented
            if "namespace" in op_status and "info" in op_status and \
            "last_deployed" in op_status["info"] and "status" in op_status["info"] and \
            "code" in op_status["info"]["status"] and "resources" in op_status["info"]["status"] and \
            "seconds" in op_status["info"]["last_deployed"]:
            ^
osmclient/scripts/osm.py:1302:13: E122 continuation line missing indentation or outdented
            if "namespace" in op_status and "info" in op_status and \
            "last_deployed" in op_status["info"] and "status" in op_status["info"] and \
            "code" in op_status["info"]["status"] and "resources" in op_status["info"]["status"] and \
            "seconds" in op_status["info"]["last_deployed"]:
            ^
osmclient/scripts/osm.py:1303:129: E501 line too long (139 > 128 characters)
                last_deployed_time = datetime.fromtimestamp(op_status["info"]["last_deployed"]["seconds"]).strftime("%a %b %d %I:%M:%S %Y")
                                                                                                                                ^
osmclient/scripts/osm.py:1307:55: E225 missing whitespace around operator
                if op_status["info"]["status"]["code"]==1:
                                                      ^
osmclient/scripts/osm.py:1334:16: E225 missing whitespace around operator
        op_data={}
               ^
osmclient/scripts/osm.py:1341:16: E225 missing whitespace around operator
        while t<30:
               ^
osmclient/scripts/osm.py:1348:14: E211 whitespace before '('
        print ("Could not determine KDU status")
             ^
osmclient/scripts/osm.py:1358:58: E231 missing whitespace after ','
            table.add_row([k, wrap_text(text=json.dumps(v,indent=2),width=100)])
                                                         ^
osmclient/scripts/osm.py:1358:68: E231 missing whitespace after ','
            table.add_row([k, wrap_text(text=json.dumps(v,indent=2),width=100)])
                                                                   ^
osmclient/scripts/osm.py:1366:1: E265 block comment should start with '# '
#@cli_osm.command(name='vnf-monitoring-show')
^
osmclient/scripts/osm.py:1367:1: E265 block comment should start with '# '
#@click.argument('vnf_name')
^
osmclient/scripts/osm.py:1368:1: E265 block comment should start with '# '
#@click.pass_context
^
osmclient/scripts/osm.py:1369:1: E265 block comment should start with '# '
#def vnf_monitoring_show(ctx, vnf_name):
^
osmclient/scripts/osm.py:1389:1: E265 block comment should start with '# '
#@cli_osm.command(name='ns-monitoring-show')
^
osmclient/scripts/osm.py:1390:1: E265 block comment should start with '# '
#@click.argument('ns_name')
^
osmclient/scripts/osm.py:1391:1: E265 block comment should start with '# '
#@click.pass_context
^
osmclient/scripts/osm.py:1392:1: E265 block comment should start with '# '
#def ns_monitoring_show(ctx, ns_name):
^
osmclient/scripts/osm.py:1449:5: E265 block comment should start with '# '
    #resp = ctx.obj.nst.get_individual(name)
    ^
osmclient/scripts/osm.py:1579:129: E501 line too long (130 > 128 characters)
@cli_osm.command(name='netslice-instance-op-show', short_help='shows the info of an operation over a Network Slice Instance(NSI)')
                                                                                                                                ^
osmclient/scripts/osm.py:1738:22: E231 missing whitespace after ','
                 repo,vendor, version):
                     ^
osmclient/scripts/osm.py:1786:1: E302 expected 2 blank lines, found 1
@cli_osm.command(name='nfpkg-create', short_help='creates a new NFpkg')
^
osmclient/scripts/osm.py:1866:19: E225 missing whitespace around operator
            config=cf.read()
                  ^
osmclient/scripts/osm.py:1932:19: E225 missing whitespace around operator
            config=cf.read()
                  ^
osmclient/scripts/osm.py:1949:17: E127 continuation line over-indented for visual indent
                'id: TEXT, vim_account: TEXT,\n'
                ^
osmclient/scripts/osm.py:1982:17: E127 continuation line over-indented for visual indent
                'id: TEXT, vim_account: TEXT,\n'
                ^
osmclient/scripts/osm.py:2008:100: W504 line break after binary operator
              help='interface(s) of the PDU: name=<NAME>,mgmt=<true|false>,ip-address=<IP_ADDRESS>'+
                                                                                                   ^
osmclient/scripts/osm.py:2008:100: E225 missing whitespace around operator
              help='interface(s) of the PDU: name=<NAME>,mgmt=<true|false>,ip-address=<IP_ADDRESS>'+
                                                                                                   ^
osmclient/scripts/osm.py:2034:12: E701 multiple statements on one line (colon)
    if name: pdu["name"] = name
           ^
osmclient/scripts/osm.py:2035:16: E701 multiple statements on one line (colon)
    if pdu_type: pdu["type"] = pdu_type
               ^
osmclient/scripts/osm.py:2036:19: E701 multiple statements on one line (colon)
    if description: pdu["description"] = description
                  ^
osmclient/scripts/osm.py:2037:19: E701 multiple statements on one line (colon)
    if vim_account: pdu["vim_accounts"] = vim_account
                  ^
osmclient/scripts/osm.py:2041:22: E225 missing whitespace around operator
            new_iface={k:v for k,v in [i.split('=') for i in iface.split(',')]}
                     ^
osmclient/scripts/osm.py:2041:25: E231 missing whitespace after ':'
            new_iface={k:v for k,v in [i.split('=') for i in iface.split(',')]}
                        ^
osmclient/scripts/osm.py:2041:33: E231 missing whitespace after ','
            new_iface={k:v for k,v in [i.split('=') for i in iface.split(',')]}
                                ^
osmclient/scripts/osm.py:2042:54: E231 missing whitespace after ','
            new_iface["mgmt"] = (new_iface.get("mgmt","false").lower() == "true")
                                                     ^
osmclient/scripts/osm.py:2436:129: E501 line too long (136 > 128 characters)
@click.option('--sdn_port_mapping', default=None, help="File describing the port mapping between compute nodes' ports and switch ports")
                                                                                                                                ^
osmclient/scripts/osm.py:2492:129: E501 line too long (136 > 128 characters)
@click.option('--sdn_port_mapping', default=None, help="File describing the port mapping between compute nodes' ports and switch ports")
                                                                                                                                ^
osmclient/scripts/osm.py:2521:15: E701 multiple statements on one line (colon)
    if newname: vim['name'] = newname
              ^
osmclient/scripts/osm.py:2522:12: E701 multiple statements on one line (colon)
    if user: vim['vim_user'] = user
           ^
osmclient/scripts/osm.py:2523:16: E701 multiple statements on one line (colon)
    if password: vim['vim_password'] = password
               ^
osmclient/scripts/osm.py:2524:16: E701 multiple statements on one line (colon)
    if auth_url: vim['vim_url'] = auth_url
               ^
osmclient/scripts/osm.py:2525:14: E701 multiple statements on one line (colon)
    if tenant: vim['vim-tenant-name'] = tenant
             ^
osmclient/scripts/osm.py:2526:20: E701 multiple statements on one line (colon)
    if account_type: vim['vim_type'] = account_type
                   ^
osmclient/scripts/osm.py:2527:19: E701 multiple statements on one line (colon)
    if description: vim['description'] = description
                  ^
osmclient/scripts/osm.py:2528:14: E701 multiple statements on one line (colon)
    if config: vim['config'] = config
             ^
osmclient/scripts/osm.py:2563:1: E265 block comment should start with '# '
#@click.option('--ro_update/--no_ro_update',
^
osmclient/scripts/osm.py:2575:15: E225 missing whitespace around operator
        filter='&'.join(filter)
              ^
osmclient/scripts/osm.py:2592:36: E225 missing whitespace around operator
                vim['vim_password']='********'
                                   ^
osmclient/scripts/osm.py:2599:13: E265 block comment should start with '# '
            #project_info = '{} ({})'.format(project_name, project_id)
            ^
osmclient/scripts/osm.py:2623:29: E225 missing whitespace around operator
        resp['vim_password']='********'
                            ^
osmclient/scripts/osm.py:2631:69: E231 missing whitespace after ','
            table.add_row([k, wrap_text(text=json.dumps(v, indent=2),width=100)])
                                                                    ^
osmclient/scripts/osm.py:2691:12: E701 multiple statements on one line (colon)
    if user: wim['user'] = user
           ^
osmclient/scripts/osm.py:2692:16: E701 multiple statements on one line (colon)
    if password: wim['password'] = password
               ^
osmclient/scripts/osm.py:2693:11: E701 multiple statements on one line (colon)
    if url: wim['wim_url'] = url
          ^
osmclient/scripts/osm.py:2696:19: E701 multiple statements on one line (colon)
    if description: wim['description'] = description
                  ^
osmclient/scripts/osm.py:2697:14: E701 multiple statements on one line (colon)
    if config: wim['config'] = config
             ^
osmclient/scripts/osm.py:2741:15: E701 multiple statements on one line (colon)
    if newname: wim['name'] = newname
              ^
osmclient/scripts/osm.py:2742:12: E701 multiple statements on one line (colon)
    if user: wim['user'] = user
           ^
osmclient/scripts/osm.py:2743:16: E701 multiple statements on one line (colon)
    if password: wim['password'] = password
               ^
osmclient/scripts/osm.py:2744:11: E701 multiple statements on one line (colon)
    if url: wim['url'] = url
          ^
osmclient/scripts/osm.py:2746:16: E701 multiple statements on one line (colon)
    if wim_type: wim['wim_type'] = wim_type
               ^
osmclient/scripts/osm.py:2747:19: E701 multiple statements on one line (colon)
    if description: wim['description'] = description
                  ^
osmclient/scripts/osm.py:2748:14: E701 multiple statements on one line (colon)
    if config: wim['config'] = config
             ^
osmclient/scripts/osm.py:2788:15: E225 missing whitespace around operator
        filter='&'.join(filter)
              ^
osmclient/scripts/osm.py:2813:29: E225 missing whitespace around operator
        resp['wim_password']='********'
                            ^
osmclient/scripts/osm.py:2848:14: E128 continuation line under-indented for visual indent
             'Openflow Datapath ID), version: version}')
             ^
osmclient/scripts/osm.py:2865:64: W504 line break after binary operator
    sdncontroller = {x: kwargs[x] for x in kwargs if kwargs[x] and
                                                               ^
osmclient/scripts/osm.py:2886:1: E302 expected 2 blank lines, found 1
@cli_osm.command(name='sdnc-update', short_help='updates an SDN controller')
^
osmclient/scripts/osm.py:2910:64: W504 line break after binary operator
    sdncontroller = {x: kwargs[x] for x in kwargs if kwargs[x] and
                                                               ^
osmclient/scripts/osm.py:2965:15: E225 missing whitespace around operator
        filter='&'.join(filter)
              ^
osmclient/scripts/osm.py:3017:129: E501 line too long (178 > 128 characters)
              help='list of VIM networks, in JSON inline format, where the cluster is accessible via L3 routing, e.g. "{(k8s_net1:vim_network1) [,(k8s_net2:vim_network2) ...]}"')
                                                                                                                                ^
osmclient/scripts/osm.py:3027:1: E265 block comment should start with '# '
#@click.option('--skip-init',
^
osmclient/scripts/osm.py:3030:1: E265 block comment should start with '# '
#@click.option('--wait',
^
osmclient/scripts/osm.py:3035:16: E128 continuation line under-indented for visual indent
               name,
               ^
osmclient/scripts/osm.py:3036:16: E128 continuation line under-indented for visual indent
               creds,
               ^
osmclient/scripts/osm.py:3037:16: E128 continuation line under-indented for visual indent
               version,
               ^
osmclient/scripts/osm.py:3038:16: E128 continuation line under-indented for visual indent
               vim,
               ^
osmclient/scripts/osm.py:3039:16: E128 continuation line under-indented for visual indent
               k8s_nets,
               ^
osmclient/scripts/osm.py:3040:16: E128 continuation line under-indented for visual indent
               description,
               ^
osmclient/scripts/osm.py:3041:16: E128 continuation line under-indented for visual indent
               namespace,
               ^
osmclient/scripts/osm.py:3042:16: E128 continuation line under-indented for visual indent
               cni):
               ^
osmclient/scripts/osm.py:3058:17: E701 multiple statements on one line (colon)
    if namespace: cluster['namespace'] = namespace
                ^
osmclient/scripts/osm.py:3059:11: E701 multiple statements on one line (colon)
    if cni: cluster['cni'] = yaml.safe_load(cni)
          ^
osmclient/scripts/osm.py:3072:129: E501 line too long (192 > 128 characters)
@click.option('--k8s-nets', help='list of VIM networks, in JSON inline format, where the cluster is accessible via L3 routing, e.g. "{(k8s_net1:vim_network1) [,(k8s_net2:vim_network2) ...]}"')
                                                                                                                                ^
osmclient/scripts/osm.py:3078:16: E128 continuation line under-indented for visual indent
               name,
               ^
osmclient/scripts/osm.py:3079:16: E128 continuation line under-indented for visual indent
               newname,
               ^
osmclient/scripts/osm.py:3080:16: E128 continuation line under-indented for visual indent
               creds,
               ^
osmclient/scripts/osm.py:3081:16: E128 continuation line under-indented for visual indent
               version,
               ^
osmclient/scripts/osm.py:3082:16: E128 continuation line under-indented for visual indent
               vim,
               ^
osmclient/scripts/osm.py:3083:16: E128 continuation line under-indented for visual indent
               k8s_nets,
               ^
osmclient/scripts/osm.py:3084:16: E128 continuation line under-indented for visual indent
               description,
               ^
osmclient/scripts/osm.py:3085:16: E128 continuation line under-indented for visual indent
               namespace,
               ^
osmclient/scripts/osm.py:3086:16: E128 continuation line under-indented for visual indent
               cni):
               ^
osmclient/scripts/osm.py:3094:15: E701 multiple statements on one line (colon)
    if newname: cluster['name'] = newname
              ^
osmclient/scripts/osm.py:3098:15: E701 multiple statements on one line (colon)
    if version: cluster['k8s_version'] = version
              ^
osmclient/scripts/osm.py:3099:11: E701 multiple statements on one line (colon)
    if vim: cluster['vim_account'] = vim
          ^
osmclient/scripts/osm.py:3100:16: E701 multiple statements on one line (colon)
    if k8s_nets: cluster['nets'] = yaml.safe_load(k8s_nets)
               ^
osmclient/scripts/osm.py:3101:19: E701 multiple statements on one line (colon)
    if description: cluster['description'] = description
                  ^
osmclient/scripts/osm.py:3102:17: E701 multiple statements on one line (colon)
    if namespace: cluster['namespace'] = namespace
                ^
osmclient/scripts/osm.py:3103:11: E701 multiple statements on one line (colon)
    if cni: cluster['cni'] = yaml.safe_load(cni)
          ^
osmclient/scripts/osm.py:3113:1: E265 block comment should start with '# '
#@click.option('--wait',
^
osmclient/scripts/osm.py:3142:15: E225 missing whitespace around operator
        filter='&'.join(filter)
              ^
osmclient/scripts/osm.py:3155:5: E722 do not use bare 'except'
    except:
    ^
osmclient/scripts/osm.py:3160:9: E265 block comment should start with '# '
        #vim_info = '{} ({})'.format(vim_name,cluster['vim_account'])
        ^
osmclient/scripts/osm.py:3167:13: E265 block comment should start with '# '
            #project_info = '{} ({})'.format(project_name, project_id)
            ^
osmclient/scripts/osm.py:3169:70: E231 missing whitespace after ','
            detailed_status = cluster["_admin"].get("detailed-status","-")
                                                                     ^
osmclient/scripts/osm.py:3202:65: E231 missing whitespace after ','
        table.add_row([k, wrap_text(text=json.dumps(v, indent=2),width=100)])
                                                                ^
osmclient/scripts/osm.py:3211:1: E303 too many blank lines (3)
###########################
^
osmclient/scripts/osm.py:3215:1: E302 expected 2 blank lines, found 3
@cli_osm.command(name='repo-add', short_help='adds a repo to OSM')
^
osmclient/scripts/osm.py:3231:1: E265 block comment should start with '# '
#@click.option('--wait',
^
osmclient/scripts/osm.py:3259:1: E265 block comment should start with '# '
#@click.option('--wait',
^
osmclient/scripts/osm.py:3264:14: E128 continuation line under-indented for visual indent
             name,
             ^
osmclient/scripts/osm.py:3265:14: E128 continuation line under-indented for visual indent
             newname,
             ^
osmclient/scripts/osm.py:3266:14: E128 continuation line under-indented for visual indent
             uri,
             ^
osmclient/scripts/osm.py:3267:14: E128 continuation line under-indented for visual indent
             description):
             ^
osmclient/scripts/osm.py:3279:19: E701 multiple statements on one line (colon)
    if description: repo['description'] = description
                  ^
osmclient/scripts/osm.py:3306:1: E265 block comment should start with '# '
#@click.option('--wait',
^
osmclient/scripts/osm.py:3337:15: E225 missing whitespace around operator
        filter='&'.join(filter)
              ^
osmclient/scripts/osm.py:3345:9: E265 block comment should start with '# '
        #cluster['k8s-nets'] = json.dumps(yaml.safe_load(cluster['k8s-nets']))
        ^
osmclient/scripts/osm.py:3346:118: E231 missing whitespace after ','
        table.add_row([repo['name'], repo['_id'], repo['type'], repo['url'], trunc_text(repo.get('description') or '',40)])
                                                                                                                     ^
osmclient/scripts/osm.py:3387:1: E303 too many blank lines (3)
####################
^
osmclient/scripts/osm.py:3391:1: E302 expected 2 blank lines, found 3
@cli_osm.command(name='project-create', short_help='creates a new project')
^
osmclient/scripts/osm.py:3393:1: E265 block comment should start with '# '
#@click.option('--description',
^
osmclient/scripts/osm.py:3442:1: E265 block comment should start with '# '
#@click.option('--force', is_flag=True, help='forces the deletion bypassing pre-conditions')
^
osmclient/scripts/osm.py:3468:15: E225 missing whitespace around operator
        filter='&'.join(filter)
              ^
osmclient/scripts/osm.py:3550:89: E225 missing whitespace around operator
              callback=lambda ctx, param, value: ''.join(value).split(',') if all(len(x)==1 for x in value) else value,
                                                                                        ^
osmclient/scripts/osm.py:3641:1: E265 block comment should start with '# '
#@click.option('--force', is_flag=True, help='forces the deletion bypassing pre-conditions')
^
osmclient/scripts/osm.py:3667:15: E225 missing whitespace around operator
        filter='&'.join(filter)
              ^
osmclient/scripts/osm.py:3692:25: E225 missing whitespace around operator
        resp['password']='********'
                        ^
osmclient/scripts/osm.py:3752:1: E265 block comment should start with '# '
#@cli_osm.command(name='ns-alarm-delete')
^
osmclient/scripts/osm.py:3753:1: E265 block comment should start with '# '
#@click.argument('name')
^
osmclient/scripts/osm.py:3754:1: E265 block comment should start with '# '
#@click.pass_context
^
osmclient/scripts/osm.py:3755:1: E265 block comment should start with '# '
#def ns_alarm_delete(ctx, name):
^
osmclient/scripts/osm.py:3772:129: E501 line too long (129 > 128 characters)
@cli_osm.command(name='ns-metric-export', short_help='exports a metric to the internal OSM bus, which can be read by other apps')
                                                                                                                                ^
osmclient/scripts/osm.py:3780:1: E265 block comment should start with '# '
#@click.option('--period', default='1w',
^
osmclient/scripts/osm.py:3805:71: E231 missing whitespace after ','
            print('{} {}'.format(ctx.obj.ns.export_metric(metric_data),i))
                                                                      ^
osmclient/scripts/osm.py:3807:14: E225 missing whitespace around operator
            i+=1
             ^
osmclient/scripts/osm.py:3823:10: E211 whitespace before '('
    print ("Server version: {}".format(ctx.obj.get_version()))
         ^
osmclient/scripts/osm.py:3824:10: E211 whitespace before '('
    print ("Client version: {}".format(pkg_resources.get_distribution("osmclient").version))
         ^
osmclient/scripts/osm.py:3829:1: E302 expected 2 blank lines, found 1
@cli_osm.command(name='upload-package', short_help='uploads a VNF package or NS package')
^
osmclient/scripts/osm.py:3850:1: E265 block comment should start with '# '
#@cli_osm.command(name='ns-scaling-show')
^
osmclient/scripts/osm.py:3851:1: E265 block comment should start with '# '
#@click.argument('ns_name')
^
osmclient/scripts/osm.py:3852:1: E265 block comment should start with '# '
#@click.pass_context
^
osmclient/scripts/osm.py:3853:1: E265 block comment should start with '# '
#def show_ns_scaling(ctx, ns_name):
^
osmclient/scripts/osm.py:3892:1: E265 block comment should start with '# '
#@cli_osm.command(name='ns-scale')
^
osmclient/scripts/osm.py:3893:1: E265 block comment should start with '# '
#@click.argument('ns_name')
^
osmclient/scripts/osm.py:3894:1: E265 block comment should start with '# '
#@click.option('--ns_scale_group', prompt=True)
^
osmclient/scripts/osm.py:3895:1: E265 block comment should start with '# '
#@click.option('--index', prompt=True)
^
osmclient/scripts/osm.py:3896:1: E265 block comment should start with '# '
#@click.option('--wait',
^
osmclient/scripts/osm.py:3902:1: E265 block comment should start with '# '
#@click.pass_context
^
osmclient/scripts/osm.py:3903:1: E265 block comment should start with '# '
#def ns_scale(ctx, ns_name, ns_scale_group, index, wait):
^
osmclient/scripts/osm.py:3916:1: E265 block comment should start with '# '
#@cli_osm.command(name='config-agent-list')
^
osmclient/scripts/osm.py:3917:1: E265 block comment should start with '# '
#@click.pass_context
^
osmclient/scripts/osm.py:3918:1: E265 block comment should start with '# '
#def config_agent_list(ctx):
^
osmclient/scripts/osm.py:3935:1: E265 block comment should start with '# '
#@cli_osm.command(name='config-agent-delete')
^
osmclient/scripts/osm.py:3936:1: E265 block comment should start with '# '
#@click.argument('name')
^
osmclient/scripts/osm.py:3937:1: E265 block comment should start with '# '
#@click.pass_context
^
osmclient/scripts/osm.py:3938:1: E265 block comment should start with '# '
#def config_agent_delete(ctx, name):
^
osmclient/scripts/osm.py:3951:1: E265 block comment should start with '# '
#@cli_osm.command(name='config-agent-add')
^
osmclient/scripts/osm.py:3952:1: E265 block comment should start with '# '
#@click.option('--name',
^
osmclient/scripts/osm.py:3954:1: E265 block comment should start with '# '
#@click.option('--account_type',
^
osmclient/scripts/osm.py:3956:1: E265 block comment should start with '# '
#@click.option('--server',
^
osmclient/scripts/osm.py:3958:1: E265 block comment should start with '# '
#@click.option('--user',
^
osmclient/scripts/osm.py:3960:1: E265 block comment should start with '# '
#@click.option('--secret',
^
osmclient/scripts/osm.py:3964:1: E265 block comment should start with '# '
#@click.pass_context
^
osmclient/scripts/osm.py:3965:1: E265 block comment should start with '# '
#def config_agent_add(ctx, name, account_type, server, user, secret):
^
osmclient/scripts/osm.py:3975:1: E265 block comment should start with '# '
#@cli_osm.command(name='ro-dump')
^
osmclient/scripts/osm.py:3976:1: E265 block comment should start with '# '
#@click.pass_context
^
osmclient/scripts/osm.py:3977:1: E265 block comment should start with '# '
#def ro_dump(ctx):
^
osmclient/scripts/osm.py:3988:1: E265 block comment should start with '# '
#@cli_osm.command(name='vcs-list')
^
osmclient/scripts/osm.py:3989:1: E265 block comment should start with '# '
#@click.pass_context
^
osmclient/scripts/osm.py:3990:1: E265 block comment should start with '# '
#def vcs_list(ctx):
^
osmclient/scripts/osm.py:4189:15: E225 missing whitespace around operator
        filter='&'.join(filter)
              ^
osmclient/scripts/osm.py:4227:14: E128 continuation line under-indented for visual indent
             short_help='Create empty NS package structure')
             ^
osmclient/scripts/osm.py:4320:1: E302 expected 2 blank lines, found 1
@cli_osm.command(name='package-validate',
^
osmclient/scripts/osm.py:4362:1: E302 expected 2 blank lines, found 1
@cli_osm.command(name='package-translate',
^
osmclient/scripts/osm.py:4377:22: E128 continuation line under-indented for visual indent
                     base_directory,
                     ^
osmclient/scripts/osm.py:4378:22: E128 continuation line under-indented for visual indent
                     recursive,
                     ^
osmclient/scripts/osm.py:4379:22: E128 continuation line under-indented for visual indent
                     dryrun):
                     ^
osmclient/scripts/osm.py:4393:129: E501 line too long (139 > 128 characters)
        table.add_row([result["current type"], result["new type"], result["path"], result["valid"], result["translated"], result["error"]])
                                                                                                                                ^
osmclient/scripts/osm.py:4403:1: E302 expected 2 blank lines, found 1
@cli_osm.command(name='package-build',
^
osmclient/scripts/osm.py:4404:14: E128 continuation line under-indented for visual indent
             short_help='Build the tar.gz of the package')
             ^
osmclient/scripts/osm.py:4434:1: E302 expected 2 blank lines, found 1
@cli_osm.command(name='descriptor-translate',
^
osmclient/scripts/osm.py:4435:129: E501 line too long (133 > 128 characters)
                 short_help='Translate input descriptor file from Rel EIGHT OSM descriptors to SOL006 and prints in standard output')
                                                                                                                                ^
osmclient/scripts/osm.py:4473:1: W391 blank line at end of file

^
osmclient/common/http.py:53:68: E231 missing whitespace after ','
        self._logger.info("Request METHOD: {} URL: {}".format("GET",self._url + endpoint))
                                                                   ^
osmclient/common/http.py:68:71: E231 missing whitespace after ','
        self._logger.info("Request METHOD: {} URL: {}".format("DELETE",self._url + endpoint))
                                                                      ^
osmclient/common/http.py:95:69: E231 missing whitespace after ','
        self._logger.info("Request METHOD: {} URL: {}".format("POST",self._url + endpoint))
                                                                    ^
osmclient/common/package_tool.py:117:25: E201 whitespace after '('
                    if ( desc_type=="vnfd" or desc_type=="nsd" ):
                        ^
osmclient/common/package_tool.py:117:35: E225 missing whitespace around operator
                    if ( desc_type=="vnfd" or desc_type=="nsd" ):
                                  ^
osmclient/common/package_tool.py:117:56: E225 missing whitespace around operator
                    if ( desc_type=="vnfd" or desc_type=="nsd" ):
                                                       ^
osmclient/common/package_tool.py:117:63: E202 whitespace before ')'
                    if ( desc_type=="vnfd" or desc_type=="nsd" ):
                                                              ^
osmclient/common/package_tool.py:118:129: E501 line too long (140 > 128 characters)
                        print("OSM descriptor '{}' written in an unsupported format. Please update to ETSI SOL006 format".format(desc_path))
                                                                                                                                ^
osmclient/common/package_tool.py:154:25: E201 whitespace after '('
                if not ( desc_type=="vnfd" or desc_type=="nsd" ):
                        ^
osmclient/common/package_tool.py:154:35: E225 missing whitespace around operator
                if not ( desc_type=="vnfd" or desc_type=="nsd" ):
                                  ^
osmclient/common/package_tool.py:154:56: E225 missing whitespace around operator
                if not ( desc_type=="vnfd" or desc_type=="nsd" ):
                                                       ^
osmclient/common/package_tool.py:154:63: E202 whitespace before ')'
                if not ( desc_type=="vnfd" or desc_type=="nsd" ):
                                                              ^
osmclient/common/package_tool.py:155:129: E501 line too long (153 > 128 characters)
                    table.append({"current type": desc_type, "new type": desc_type, "path": desc_path, "valid": "OK", "translated": "N/A", "error": "-"})
                                                                                                                                ^
osmclient/common/package_tool.py:159:129: E501 line too long (151 > 128 characters)
                        sol006_model = yaml.safe_dump(im_translation.translate_im_model_to_sol006(descriptor_data), indent=4, default_flow_style=False)
                                                                                                                                ^
osmclient/common/package_tool.py:165:129: E501 line too long (160 > 128 characters)
                        table.append({"current type": desc_type, "new type": new_desc_type, "path": desc_path, "valid": "OK", "translated": "OK", "error": "-"})
                                                                                                                                ^
osmclient/common/package_tool.py:167:129: E501 line too long (211 > 128 characters)
                        table.append({"current type": desc_type, "new type": new_desc_type, "path": desc_path, "valid": "OK", "translated": "ERROR", "error": "Error in the post-validation: {}".format(str(ve2))})
                                                                                                                                ^
osmclient/common/package_tool.py:169:129: E501 line too long (206 > 128 characters)
                        table.append({"current type": desc_type, "new type": new_desc_type, "path": desc_path, "valid": "OK", "translated": "ERROR", "error": "Error in the translation: {}".format(str(e2))})
                                                                                                                                ^
osmclient/common/package_tool.py:171:129: E501 line too long (194 > 128 characters)
                table.append({"current type": desc_type, "new type": "N/A", "path": desc_path, "valid": "ERROR", "translated": "N/A", "error": "Error in the pre-validation: {}".format(str(ve))})
                                                                                                                                ^
osmclient/common/package_tool.py:173:129: E501 line too long (151 > 128 characters)
                table.append({"current type": desc_type, "new type": "N/A", "path": desc_path, "valid": "ERROR", "translated": "N/A", "error": str(e)})
                                                                                                                                ^
osmclient/common/package_tool.py:364:129: E501 line too long (146 > 128 characters)
            raise ClientException('Descriptor filename is not correct in: {}. It should end with "nfd.yaml" or "nsd.yaml"'.format(package_folder))
                                                                                                                                ^
osmclient/common/package_tool.py:522:13: E265 block comment should start with '# '
            #self._logger.debug("\n"+yaml.safe_dump(descriptor_dict, indent=4, default_flow_style=False))
            ^
osmclient/common/package_tool.py:524:17: E201 whitespace after '('
            if ( (desc_type=="vnf" and ("vnfd:vnfd-catalog" in descriptor_dict or "vnfd-catalog" in descriptor_dict)) or
                ^
osmclient/common/package_tool.py:524:28: E225 missing whitespace around operator
            if ( (desc_type=="vnf" and ("vnfd:vnfd-catalog" in descriptor_dict or "vnfd-catalog" in descriptor_dict)) or
                           ^
osmclient/common/package_tool.py:524:119: W504 line break after binary operator
            if ( (desc_type=="vnf" and ("vnfd:vnfd-catalog" in descriptor_dict or "vnfd-catalog" in descriptor_dict)) or
                                                                                                                      ^
osmclient/common/package_tool.py:525:28: E225 missing whitespace around operator
                 (desc_type=="ns" and ( "nsd:nsd-catalog" in descriptor_dict or "nsd-catalog" in descriptor_dict)) ):
                           ^
osmclient/common/package_tool.py:525:40: E201 whitespace after '('
                 (desc_type=="ns" and ( "nsd:nsd-catalog" in descriptor_dict or "nsd-catalog" in descriptor_dict)) ):
                                       ^
osmclient/common/package_tool.py:525:115: E202 whitespace before ')'
                 (desc_type=="ns" and ( "nsd:nsd-catalog" in descriptor_dict or "nsd-catalog" in descriptor_dict)) ):
                                                                                                                  ^
osmclient/common/utils.py:62:46: W504 line break after binary operator
        if (re.match('.*.yaml', member.name) and
                                             ^
osmclient/v1/vnf.py:31:17: E128 continuation line under-indented for visual indent
                .format(self._client.so_rbac_project_path))
                ^
osmclient/v1/vim.py:61:12: E114 indentation is not a multiple of 4 (comment)
           #'openstack' not in vim_access['vim-type']):
           ^
osmclient/v1/vim.py:61:12: E265 block comment should start with '# '
           #'openstack' not in vim_access['vim-type']):
           ^
osmclient/v1/vim.py:69:12: E111 indentation is not a multiple of 4
           vim_config = yaml.safe_load(vim_access['config'])
           ^
osmclient/v1/vim.py:84:5: E303 too many blank lines (2)
    def _update_ro_accounts(self):
    ^
osmclient/v1/vim.py:86:21: E128 continuation line under-indented for visual indent
                    .format(self._client.so_rbac_project_path))
                    ^
osmclient/v1/vim.py:93:45: E126 continuation line over-indented for hanging indent
                                            "ro-account": account['name'], 
                                            ^
osmclient/v1/vim.py:95:41: E126 continuation line over-indented for hanging indent
                                        }
                                        ^
osmclient/v1/vim.py:98:21: E128 continuation line under-indented for visual indent
                    refresh_body)
                    ^
osmclient/v1/vim.py:103:5: E303 too many blank lines (2)
    def update_vim_account_dict(self, vim_account, vim_access, vim_config):
    ^
osmclient/v1/vim.py:146:53: E127 continuation line over-indented for visual indent
                                                    .format(vim_name))
                                                    ^
osmclient/v1/vim.py:160:21: E128 continuation line under-indented for visual indent
                    .format(self._client.so_rbac_project_path))
                    ^
osmclient/v1/vim.py:173:25: E128 continuation line under-indented for visual indent
                        if 'uuid' in datacenter else None}) 
                        ^
osmclient/v1/vim.py:198:63: E128 continuation line under-indented for visual indent
                                                              tenant['uuid']))
                                                              ^
osmclient/v1/vim.py:233:21: E128 continuation line under-indented for visual indent
                    .format(self._client.so_rbac_project_path))
                    ^
osmclient/v1/vim.py:270:17: E128 continuation line under-indented for visual indent
                .format(self._client.so_rbac_project_path))
                ^
osmclient/v1/ns.py:38:17: E128 continuation line under-indented for visual indent
                .format(self._client.so_rbac_project_path))
                ^
osmclient/v1/ns.py:147:15: E126 continuation line over-indented for hanging indent
              'api/operational/{}ns-instance-opdata/nsr/{}?deep'
              ^
osmclient/v1/ns.py:171:21: E128 continuation line under-indented for visual indent
                    .format(self._client.so_rbac_project_path, ns['id']))
                    ^
osmclient/v1/nsd.py:33:17: E128 continuation line under-indented for visual indent
                .format(self._client.so_rbac_project_path))
                ^
osmclient/v1/vnfd.py:33:17: E128 continuation line under-indented for visual indent
                .format(self._client.so_rbac_project_path))
                ^
osmclient/v1/vca.py:32:17: E128 continuation line under-indented for visual indent
                .format(self._client.so_rbac_project_path))
                ^
osmclient/v1/vca.py:58:33: E128 continuation line under-indented for visual indent
                                .format(self._client.so_rbac_project_path), postdata):
                                ^
osmclient/v1/client.py:75:17: E126 continuation line over-indented for hanging indent
                self._host,
                ^
osmclient/v1/client.py:128:1: W391 blank line at end of file

^
osmclient/sol005/vnf.py:26:1: E302 expected 2 blank lines, found 1
class Vnf(object):
^
osmclient/sol005/vnf.py:52:66: E231 missing whitespace after ','
        _, resp = self._http.get2_cmd('{}{}'.format(self._apiBase,filter_string))
                                                                 ^
osmclient/sol005/vnf.py:53:9: E265 block comment should start with '# '
        #print('RESP: {}'.format(resp))
        ^
osmclient/sol005/vnf.py:84:13: E265 block comment should start with '# '
            #print('RESP: {}'.format(resp))
            ^
osmclient/sol005/wim.py:87:13: E265 block comment should start with '# '
            #wim_account['config'] = json.dumps(wim_config)
            ^
osmclient/sol005/wim.py:90:40: E128 continuation line under-indented for visual indent
                                       postfields_dict=wim_account)
                                       ^
osmclient/sol005/wim.py:91:9: E265 block comment should start with '# '
        #print('HTTP CODE: {}'.format(http_code))
        ^
osmclient/sol005/wim.py:92:9: E265 block comment should start with '# '
        #print('RESP: {}'.format(resp))
        ^
osmclient/sol005/wim.py:93:9: E265 block comment should start with '# '
        #if http_code in (200, 201, 202, 204):
        ^
osmclient/sol005/wim.py:103:9: E265 block comment should start with '# '
        #else:
        ^
osmclient/sol005/wim.py:119:41: E225 missing whitespace around operator
            if wim_account.get('config')=="" and (wim_port_mapping):
                                        ^
osmclient/sol005/wim.py:121:41: E225 missing whitespace around operator
            if wim_account.get('config')=="":
                                        ^
osmclient/sol005/wim.py:129:9: E265 block comment should start with '# '
        #wim_account['config'] = json.dumps(wim_config)
        ^
osmclient/sol005/wim.py:130:85: E231 missing whitespace after ','
        http_code, resp = self._http.patch_cmd(endpoint='{}/{}'.format(self._apiBase,wim['_id']),
                                                                                    ^
osmclient/sol005/wim.py:131:40: E128 continuation line under-indented for visual indent
                                       postfields_dict=wim_account)
                                       ^
osmclient/sol005/wim.py:132:9: E265 block comment should start with '# '
        #print('HTTP CODE: {}'.format(http_code))
        ^
osmclient/sol005/wim.py:133:9: E265 block comment should start with '# '
        #print('RESP: {}'.format(resp))
        ^
osmclient/sol005/wim.py:134:9: E265 block comment should start with '# '
        #if http_code in (200, 201, 202, 204):
        ^
osmclient/sol005/wim.py:143:9: E265 block comment should start with '# '
        #else:
        ^
osmclient/sol005/wim.py:182:42: E128 continuation line under-indented for visual indent
                                         wim_id, querystring))
                                         ^
osmclient/sol005/wim.py:201:26: E271 multiple spaces after keyword
            msg = resp or  ""
                         ^
osmclient/sol005/wim.py:217:66: E231 missing whitespace after ','
        _, resp = self._http.get2_cmd('{}{}'.format(self._apiBase,filter_string))
                                                                 ^
osmclient/sol005/wim.py:223:25: E128 continuation line under-indented for visual indent
                        if '_id' in datacenter else None})
                        ^
osmclient/sol005/wim.py:235:71: E231 missing whitespace after ','
            _, resp = self._http.get2_cmd('{}/{}'.format(self._apiBase,wim_id))
                                                                      ^
osmclient/sol005/wim.py:237:23: E222 multiple spaces after operator
                resp =  json.loads(resp)
                      ^
osmclient/sol005/wim.py:243:1: W391 blank line at end of file

^
osmclient/sol005/vim.py:75:13: E265 block comment should start with '# '
            #'openstack' not in vim_access['vim-type']):
            ^
osmclient/sol005/vim.py:93:13: E265 block comment should start with '# '
            #vim_account['config'] = json.dumps(vim_config)
            ^
osmclient/sol005/vim.py:96:40: E128 continuation line under-indented for visual indent
                                       postfields_dict=vim_account)
                                       ^
osmclient/sol005/vim.py:97:9: E265 block comment should start with '# '
        #print('HTTP CODE: {}'.format(http_code))
        ^
osmclient/sol005/vim.py:98:9: E265 block comment should start with '# '
        #print('RESP: {}'.format(resp))
        ^
osmclient/sol005/vim.py:99:9: E265 block comment should start with '# '
        #if http_code in (200, 201, 202, 204):
        ^
osmclient/sol005/vim.py:109:9: E265 block comment should start with '# '
        #else:
        ^
osmclient/sol005/vim.py:125:41: E225 missing whitespace around operator
            if vim_account.get('config')=="" and (sdn_controller or sdn_port_mapping):
                                        ^
osmclient/sol005/vim.py:127:41: E225 missing whitespace around operator
            if vim_account.get('config')=="":
                                        ^
osmclient/sol005/vim.py:142:9: E265 block comment should start with '# '
        #vim_account['config'] = json.dumps(vim_config)
        ^
osmclient/sol005/vim.py:143:85: E231 missing whitespace after ','
        http_code, resp = self._http.patch_cmd(endpoint='{}/{}'.format(self._apiBase,vim['_id']),
                                                                                    ^
osmclient/sol005/vim.py:144:40: E128 continuation line under-indented for visual indent
                                       postfields_dict=vim_account)
                                       ^
osmclient/sol005/vim.py:147:9: E265 block comment should start with '# '
        #if http_code in (200, 201, 202, 204):
        ^
osmclient/sol005/vim.py:156:9: E265 block comment should start with '# '
        #else:
        ^
osmclient/sol005/vim.py:194:42: E128 continuation line under-indented for visual indent
                                         vim_id, querystring))
                                         ^
osmclient/sol005/vim.py:195:9: E265 block comment should start with '# '
        #print('HTTP CODE: {}'.format(http_code))
        ^
osmclient/sol005/vim.py:196:9: E265 block comment should start with '# '
        #print('RESP: {}'.format(resp))
        ^
osmclient/sol005/vim.py:228:66: E231 missing whitespace after ','
        _, resp = self._http.get2_cmd('{}{}'.format(self._apiBase,filter_string))
                                                                 ^
osmclient/sol005/vim.py:245:71: E231 missing whitespace after ','
            _, resp = self._http.get2_cmd('{}/{}'.format(self._apiBase,vim_id))
                                                                      ^
osmclient/sol005/vim.py:253:1: W391 blank line at end of file

^
osmclient/sol005/k8scluster.py:24:1: E302 expected 2 blank lines, found 1
class K8scluster(object):
^
osmclient/sol005/k8scluster.py:45:40: E128 continuation line under-indented for visual indent
                                       postfields_dict=k8s_cluster)
                                       ^
osmclient/sol005/k8scluster.py:46:9: E265 block comment should start with '# '
        #print 'HTTP CODE: {}'.format(http_code)
        ^
osmclient/sol005/k8scluster.py:47:9: E265 block comment should start with '# '
        #print 'RESP: {}'.format(resp)
        ^
osmclient/sol005/k8scluster.py:48:9: E265 block comment should start with '# '
        #if http_code in (200, 201, 202, 204):
        ^
osmclient/sol005/k8scluster.py:54:9: E265 block comment should start with '# '
        #else:
        ^
osmclient/sol005/k8scluster.py:66:83: E231 missing whitespace after ','
        http_code, resp = self._http.put_cmd(endpoint='{}/{}'.format(self._apiBase,cluster['_id']),
                                                                                  ^
osmclient/sol005/k8scluster.py:67:40: E128 continuation line under-indented for visual indent
                                       postfields_dict=k8s_cluster)
                                       ^
osmclient/sol005/k8scluster.py:70:9: E265 block comment should start with '# '
        #if http_code in (200, 201, 202, 204):
        ^
osmclient/sol005/k8scluster.py:72:9: E265 block comment should start with '# '
        #else:
        ^
osmclient/sol005/k8scluster.py:98:42: E128 continuation line under-indented for visual indent
                                         cluster_id, querystring))
                                         ^
osmclient/sol005/k8scluster.py:99:9: E265 block comment should start with '# '
        #print 'HTTP CODE: {}'.format(http_code)
        ^
osmclient/sol005/k8scluster.py:100:9: E265 block comment should start with '# '
        #print 'RESP: {}'.format(resp)
        ^
osmclient/sol005/k8scluster.py:121:66: E231 missing whitespace after ','
        _, resp = self._http.get2_cmd('{}{}'.format(self._apiBase,filter_string))
                                                                 ^
osmclient/sol005/k8scluster.py:134:71: E231 missing whitespace after ','
            _, resp = self._http.get2_cmd('{}/{}'.format(self._apiBase,cluster_id))
                                                                      ^
osmclient/sol005/k8scluster.py:142:1: W391 blank line at end of file

^
osmclient/sol005/ns.py:66:66: E231 missing whitespace after ','
        _, resp = self._http.get2_cmd('{}{}'.format(self._apiBase,filter_string))
                                                                 ^
osmclient/sol005/ns.py:97:13: E265 block comment should start with '# '
            #resp = self._http.get_cmd('{}/{}/nsd_content'.format(self._apiBase, ns_id))
            ^
osmclient/sol005/ns.py:98:13: E265 block comment should start with '# '
            #print(yaml.safe_dump(resp))
            ^
osmclient/sol005/ns.py:130:50: E128 continuation line under-indented for visual indent
                                                 ns['_id'], querystring))
                                                 ^
osmclient/sol005/ns.py:192:9: E265 block comment should start with '# '
        #ns['userdata'] = {}
        ^
osmclient/sol005/ns.py:193:9: E265 block comment should start with '# '
        #ns['userdata']['key1']='value1'
        ^
osmclient/sol005/ns.py:194:9: E265 block comment should start with '# '
        #ns['userdata']['key2']='value2'
        ^
osmclient/sol005/ns.py:235:42: E128 continuation line under-indented for visual indent
                                         "'member-vnf-index'")
                                         ^
osmclient/sol005/ns.py:252:47: E231 missing whitespace after ','
            http_header = ['{}: {}'.format(key,val)
                                              ^
osmclient/sol005/ns.py:253:27: E128 continuation line under-indented for visual indent
                          for (key,val) in list(headers.items())]
                          ^
osmclient/sol005/ns.py:253:35: E231 missing whitespace after ','
                          for (key,val) in list(headers.items())]
                                  ^
osmclient/sol005/ns.py:256:36: E128 continuation line under-indented for visual indent
                                   postfields_dict=ns)
                                   ^
osmclient/sol005/ns.py:259:13: E265 block comment should start with '# '
            #if http_code in (200, 201, 202, 204):
            ^
osmclient/sol005/ns.py:270:13: E265 block comment should start with '# '
            #else:
            ^
osmclient/sol005/ns.py:279:20: E225 missing whitespace around operator
            message="failed to create ns: {} nsd: {}\nerror:\n{}".format(
                   ^
osmclient/sol005/ns.py:293:39: E128 continuation line under-indented for visual indent
                                      self._apiVersion, self._apiResource)
                                      ^
osmclient/sol005/ns.py:296:18: E111 indentation is not a multiple of 4
                 filter_string = '&{}'.format(filter)
                 ^
osmclient/sol005/ns.py:296:18: E117 over-indented
                 filter_string = '&{}'.format(filter)
                 ^
osmclient/sol005/ns.py:298:56: E126 continuation line over-indented for hanging indent
                                                       self._apiBase, ns['_id'],
                                                       ^
osmclient/sol005/ns.py:299:70: E202 whitespace before ')'
                                                       filter_string) )
                                                                     ^
osmclient/sol005/ns.py:300:13: E265 block comment should start with '# '
            #print('HTTP CODE: {}'.format(http_code))
            ^
osmclient/sol005/ns.py:301:13: E265 block comment should start with '# '
            #print('RESP: {}'.format(resp))
            ^
osmclient/sol005/ns.py:318:20: E225 missing whitespace around operator
            message="failed to get operation list of NS {}:\nerror:\n{}".format(
                   ^
osmclient/sol005/ns.py:331:39: E128 continuation line under-indented for visual indent
                                      self._apiVersion, self._apiResource)
                                      ^
osmclient/sol005/ns.py:333:13: E265 block comment should start with '# '
            #print('HTTP CODE: {}'.format(http_code))
            ^
osmclient/sol005/ns.py:334:13: E265 block comment should start with '# '
            #print('RESP: {}'.format(resp))
            ^
osmclient/sol005/ns.py:351:20: E225 missing whitespace around operator
            message="failed to get status of operation {}:\nerror:\n{}".format(
                   ^
osmclient/sol005/ns.py:367:13: E265 block comment should start with '# '
            #print('OP_NAME: {}'.format(op_name))
            ^
osmclient/sol005/ns.py:368:13: E265 block comment should start with '# '
            #print('OP_DATA: {}'.format(json.dumps(op_data)))
            ^
osmclient/sol005/ns.py:370:13: E265 block comment should start with '# '
            #print('HTTP CODE: {}'.format(http_code))
            ^
osmclient/sol005/ns.py:371:13: E265 block comment should start with '# '
            #print('RESP: {}'.format(resp))
            ^
osmclient/sol005/ns.py:372:13: E265 block comment should start with '# '
            #if http_code in (200, 201, 202, 204):
            ^
osmclient/sol005/ns.py:377:35: E126 continuation line over-indented for hanging indent
                                  resp))
                                  ^
osmclient/sol005/ns.py:383:13: E265 block comment should start with '# '
            #else:
            ^
osmclient/sol005/ns.py:392:20: E225 missing whitespace around operator
            message="failed to exec operation {}:\nerror:\n{}".format(
                   ^
osmclient/sol005/ns.py:403:20: E225 missing whitespace around operator
            op_data={}
                   ^
osmclient/sol005/ns.py:421:20: E225 missing whitespace around operator
            message="failed to scale vnf {} of ns {}:\nerror:\n{}".format(
                   ^
osmclient/sol005/ns.py:433:40: E128 continuation line under-indented for visual indent
                                       postfields_dict=data)
                                       ^
osmclient/sol005/ns.py:434:13: E265 block comment should start with '# '
            #print('HTTP CODE: {}'.format(http_code))
            ^
osmclient/sol005/ns.py:435:13: E265 block comment should start with '# '
            #print('RESP: {}'.format(resp))
            ^
osmclient/sol005/ns.py:439:13: E265 block comment should start with '# '
            #else:
            ^
osmclient/sol005/ns.py:449:20: E225 missing whitespace around operator
            message="failed to create alarm: alarm {}\n{}".format(
                   ^
osmclient/sol005/ns.py:463:40: E128 continuation line under-indented for visual indent
                                       postfields_dict=data)
                                       ^
osmclient/sol005/ns.py:464:13: E265 block comment should start with '# '
            #print('HTTP CODE: {}'.format(http_code))
            ^
osmclient/sol005/ns.py:465:13: E265 block comment should start with '# '
            #print('RESP: {}'.format(resp))
            ^
osmclient/sol005/ns.py:469:13: E265 block comment should start with '# '
            #else:
            ^
osmclient/sol005/ns.py:479:20: E225 missing whitespace around operator
            message="failed to delete alarm: alarm {}\n{}".format(
                   ^
osmclient/sol005/ns.py:491:40: E128 continuation line under-indented for visual indent
                                       postfields_dict=data)
                                       ^
osmclient/sol005/ns.py:492:13: E265 block comment should start with '# '
            #print('HTTP CODE: {}'.format(http_code))
            ^
osmclient/sol005/ns.py:493:13: E265 block comment should start with '# '
            #print('RESP: {}'.format(resp))
            ^
osmclient/sol005/ns.py:497:13: E265 block comment should start with '# '
            #else:
            ^
osmclient/sol005/ns.py:507:20: E225 missing whitespace around operator
            message="failed to export metric: metric {}\n{}".format(
                   ^
osmclient/sol005/ns.py:523:1: W391 blank line at end of file

^
osmclient/sol005/pdud.py:46:66: E231 missing whitespace after ','
        _, resp = self._http.get2_cmd('{}{}'.format(self._apiBase,filter_string))
                                                                 ^
osmclient/sol005/pdud.py:73:9: E265 block comment should start with '# '
        #print(yaml.safe_dump(resp))
        ^
osmclient/sol005/pdud.py:85:42: E128 continuation line under-indented for visual indent
                                         pdud['_id'], querystring))
                                         ^
osmclient/sol005/pdud.py:86:9: E265 block comment should start with '# '
        #print('HTTP CODE: {}'.format(http_code))
        ^
osmclient/sol005/pdud.py:87:9: E265 block comment should start with '# '
        #print('RESP: {}'.format(resp))
        ^
osmclient/sol005/pdud.py:104:16: E225 missing whitespace around operator
        headers= self._client._headers
               ^
osmclient/sol005/pdud.py:106:43: E231 missing whitespace after ','
        http_header = ['{}: {}'.format(key,val)
                                          ^
osmclient/sol005/pdud.py:107:23: E128 continuation line under-indented for visual indent
                      for (key,val) in list(headers.items())]
                      ^
osmclient/sol005/pdud.py:107:31: E231 missing whitespace after ','
                      for (key,val) in list(headers.items())]
                              ^
osmclient/sol005/pdud.py:113:13: E265 block comment should start with '# '
            #endpoint = '{}{}'.format(self._apiBase,ow_string)
            ^
osmclient/sol005/pdud.py:115:9: E265 block comment should start with '# '
        #print('HTTP CODE: {}'.format(http_code))
        ^
osmclient/sol005/pdud.py:116:9: E265 block comment should start with '# '
        #print('RESP: {}'.format(resp))
        ^
osmclient/sol005/pdud.py:117:9: E265 block comment should start with '# '
        #if http_code in (200, 201, 202, 204):
        ^
osmclient/sol005/pdud.py:124:9: E265 block comment should start with '# '
        #else:
        ^
osmclient/sol005/pdud.py:138:1: W391 blank line at end of file

^
osmclient/sol005/user.py:68:9: E265 block comment should start with '# '
        #print('HTTP CODE: {}'.format(http_code))
        ^
osmclient/sol005/user.py:69:9: E265 block comment should start with '# '
        #print('RESP: {}'.format(resp))
        ^
osmclient/sol005/user.py:70:9: E265 block comment should start with '# '
        #if http_code in (200, 201, 202, 204):
        ^
osmclient/sol005/user.py:77:9: E265 block comment should start with '# '
        #else:
        ^
osmclient/sol005/user.py:147:46: E128 continuation line under-indented for visual indent
                                             postfields_dict=update_user, skip_query_admin=True)
                                             ^
osmclient/sol005/user.py:159:9: E265 block comment should start with '# '
        #else:
        ^
osmclient/sol005/user.py:178:42: E128 continuation line under-indented for visual indent
                                         user['_id'], querystring), skip_query_admin=True)
                                         ^
osmclient/sol005/user.py:179:9: E265 block comment should start with '# '
        #print('HTTP CODE: {}'.format(http_code))
        ^
osmclient/sol005/user.py:180:9: E265 block comment should start with '# '
        #print('RESP: {}'.format(resp))
        ^
osmclient/sol005/user.py:204:66: E231 missing whitespace after ','
        _, resp = self._http.get2_cmd('{}{}'.format(self._apiBase,filter_string), skip_query_admin=True)
                                                                 ^
osmclient/sol005/user.py:205:9: E265 block comment should start with '# '
        #print('RESP: {}'.format(resp))
        ^
osmclient/sol005/user.py:225:1: W391 blank line at end of file

^
osmclient/sol005/sdncontroller.py:76:40: E128 continuation line under-indented for visual indent
                                       postfields_dict=sdn_controller)
                                       ^
osmclient/sol005/sdncontroller.py:77:9: E265 block comment should start with '# '
        #print('HTTP CODE: {}'.format(http_code))
        ^
osmclient/sol005/sdncontroller.py:78:9: E265 block comment should start with '# '
        #print('RESP: {}'.format(resp))
        ^
osmclient/sol005/sdncontroller.py:79:9: E265 block comment should start with '# '
        #if http_code in (200, 201, 202, 204):
        ^
osmclient/sol005/sdncontroller.py:89:9: E265 block comment should start with '# '
        #else:
        ^
osmclient/sol005/sdncontroller.py:105:85: E231 missing whitespace after ','
        http_code, resp = self._http.patch_cmd(endpoint='{}/{}'.format(self._apiBase,sdnc['_id']),
                                                                                    ^
osmclient/sol005/sdncontroller.py:109:9: E265 block comment should start with '# '
        #if http_code in (200, 201, 202, 204):
        ^
osmclient/sol005/sdncontroller.py:118:9: E265 block comment should start with '# '
        #else:
        ^
osmclient/sol005/sdncontroller.py:166:66: E231 missing whitespace after ','
        _, resp = self._http.get2_cmd('{}{}'.format(self._apiBase,filter_string))
                                                                 ^
osmclient/sol005/sdncontroller.py:167:9: E265 block comment should start with '# '
        #print('RESP: {}'.format(resp))
        ^
osmclient/sol005/sdncontroller.py:186:1: W391 blank line at end of file

^
osmclient/sol005/role.py:72:9: E265 block comment should start with '# '
        #if http_code in (200, 201, 202, 204):
        ^
osmclient/sol005/role.py:79:9: E265 block comment should start with '# '
        #else:
        ^
osmclient/sol005/role.py:165:9: E265 block comment should start with '# '
        #else:
        ^
osmclient/sol005/role.py:190:66: E127 continuation line over-indented for visual indent
                                                                 skip_query_admin=True)
                                                                 ^
osmclient/sol005/role.py:220:82: E231 missing whitespace after ','
        _, resp = self._http.get2_cmd('{}{}'.format(self._apiBase, filter_string),skip_query_admin=True)
                                                                                 ^
osmclient/sol005/role.py:245:1: W391 blank line at end of file

^
osmclient/sol005/nst.py:28:1: E265 block comment should start with '# '
#from os import stat
^
osmclient/sol005/nst.py:29:1: E265 block comment should start with '# '
#from os.path import basename
^
osmclient/sol005/nst.py:31:1: E302 expected 2 blank lines, found 1
class Nst(object):
^
osmclient/sol005/nst.py:50:9: E265 block comment should start with '# '
        #print(yaml.safe_dump(resp))
        ^
osmclient/sol005/nst.py:75:13: E265 block comment should start with '# '
            #print(yaml.safe_dump(resp))
            ^
osmclient/sol005/nst.py:91:9: E265 block comment should start with '# '
        #print('HTTP CODE: {}'.format(http_code))
        ^
osmclient/sol005/nst.py:92:9: E265 block comment should start with '# '
        #print('RESP: {}'.format(resp))
        ^
osmclient/sol005/nst.py:93:9: E265 block comment should start with '# '
        #if http_code in (200, 201, 202, 204):
        ^
osmclient/sol005/nst.py:95:13: E265 block comment should start with '# '
            #store in a file
            ^
osmclient/sol005/nst.py:97:9: E265 block comment should start with '# '
        #else:
        ^
osmclient/sol005/nst.py:125:42: E128 continuation line under-indented for visual indent
                                         nst['_id'], querystring))
                                         ^
osmclient/sol005/nst.py:126:9: E265 block comment should start with '# '
        #print('HTTP CODE: {}'.format(http_code))
        ^
osmclient/sol005/nst.py:127:9: E265 block comment should start with '# '
        #print('RESP: {}'.format(resp))
        ^
osmclient/sol005/nst.py:163:26: E126 continuation line over-indented for hanging indent
                         "Unexpected MIME type for file {}: MIME type {}".format(
                         ^
osmclient/sol005/nst.py:165:23: E126 continuation line over-indented for hanging indent
                      )
                      ^
osmclient/sol005/nst.py:166:20: E225 missing whitespace around operator
            headers= self._client._headers
                   ^
osmclient/sol005/nst.py:171:17: E265 block comment should start with '# '
                #headers['Content-Type'] = 'application/binary'
                ^
osmclient/sol005/nst.py:173:17: E265 block comment should start with '# '
                #headers['Content-Filename'] = basename(filename)
                ^
osmclient/sol005/nst.py:174:17: E265 block comment should start with '# '
                #file_size = stat(filename).st_size
                ^
osmclient/sol005/nst.py:175:17: E265 block comment should start with '# '
                #headers['Content-Range'] = 'bytes 0-{}/{}'.format(file_size - 1, file_size)
                ^
osmclient/sol005/nst.py:178:26: E126 continuation line over-indented for hanging indent
                         "Unexpected MIME type for file {}: MIME type {}".format(
                         ^
osmclient/sol005/nst.py:180:23: E126 continuation line over-indented for hanging indent
                      )
                      ^
osmclient/sol005/nst.py:182:47: E231 missing whitespace after ','
            http_header = ['{}: {}'.format(key,val)
                                              ^
osmclient/sol005/nst.py:183:27: E128 continuation line under-indented for visual indent
                          for (key,val) in list(headers.items())]
                          ^
osmclient/sol005/nst.py:183:35: E231 missing whitespace after ','
                          for (key,val) in list(headers.items())]
                                  ^
osmclient/sol005/nst.py:194:55: E231 missing whitespace after ','
                endpoint = '{}{}'.format(self._apiBase,ow_string)
                                                      ^
osmclient/sol005/nst.py:196:13: E265 block comment should start with '# '
            #print('HTTP CODE: {}'.format(http_code))
            ^
osmclient/sol005/nst.py:197:13: E265 block comment should start with '# '
            #print('RESP: {}'.format(resp))
            ^
osmclient/sol005/nst.py:218:1: W391 blank line at end of file

^
osmclient/sol005/vnfd.py:212:50: E127 continuation line over-indented for visual indent
                        cpu_override_string = "virtual-compute-desc.{}.virtual-cpu={};"\
                                                 .format(vcd_number, quote(yaml.safe_dump(virtual_cpu)))
                                                 ^
osmclient/sol005/vnfd.py:214:47: E127 continuation line over-indented for visual indent
                        memory_override_string = "virtual-compute-desc.{}.virtual-memory={};"\
                                              .format(vcd_number, quote(yaml.safe_dump(virtual_memory)))
                                              ^
osmclient/sol005/vnfd.py:228:50: E127 continuation line over-indented for visual indent
                        cpu_override_string = "virtual-compute-desc.{}.virtual-cpu={};"\
                                                 .format(vcd_number, quote(yaml.safe_dump(virtual_cpu)))
                                                 ^
osmclient/sol005/vnfd.py:230:47: E127 continuation line over-indented for visual indent
                        memory_override_string = "virtual-compute-desc.{}.virtual-memory={};"\
                                              .format(vcd_number, quote(yaml.safe_dump(virtual_memory)))
                                              ^
osmclient/sol005/nsi.py:67:66: E231 missing whitespace after ','
        _, resp = self._http.get2_cmd('{}{}'.format(self._apiBase,filter_string))
                                                                 ^
osmclient/sol005/nsi.py:98:13: E265 block comment should start with '# '
            #resp = self._http.get_cmd('{}/{}/nsd_content'.format(self._apiBase, nsi_id))
            ^
osmclient/sol005/nsi.py:99:13: E265 block comment should start with '# '
            #print(yaml.safe_dump(resp))
            ^
osmclient/sol005/nsi.py:113:42: E128 continuation line under-indented for visual indent
                                         nsi['_id'], querystring))
                                         ^
osmclient/sol005/nsi.py:161:9: E265 block comment should start with '# '
        #nsi['userdata'] = {}
        ^
osmclient/sol005/nsi.py:162:9: E265 block comment should start with '# '
        #nsi['userdata']['key1']='value1'
        ^
osmclient/sol005/nsi.py:163:9: E265 block comment should start with '# '
        #nsi['userdata']['key2']='value2'
        ^
osmclient/sol005/nsi.py:230:47: E231 missing whitespace after ','
            http_header = ['{}: {}'.format(key,val)
                                              ^
osmclient/sol005/nsi.py:231:27: E128 continuation line under-indented for visual indent
                          for (key,val) in list(headers.items())]
                          ^
osmclient/sol005/nsi.py:231:35: E231 missing whitespace after ','
                          for (key,val) in list(headers.items())]
                                  ^
osmclient/sol005/nsi.py:234:36: E128 continuation line under-indented for visual indent
                                   postfields_dict=nsi)
                                   ^
osmclient/sol005/nsi.py:235:13: E265 block comment should start with '# '
            #print('HTTP CODE: {}'.format(http_code))
            ^
osmclient/sol005/nsi.py:236:13: E265 block comment should start with '# '
            #print('RESP: {}'.format(resp))
            ^
osmclient/sol005/nsi.py:237:13: E265 block comment should start with '# '
            #if http_code in (200, 201, 202, 204):
            ^
osmclient/sol005/nsi.py:242:35: E126 continuation line over-indented for hanging indent
                                  resp))
                                  ^
osmclient/sol005/nsi.py:247:13: E265 block comment should start with '# '
            #else:
            ^
osmclient/sol005/nsi.py:256:20: E225 missing whitespace around operator
            message="failed to create nsi: {} nst: {}\nerror:\n{}".format(
                   ^
osmclient/sol005/nsi.py:270:39: E128 continuation line under-indented for visual indent
                                      self._apiVersion, self._apiResource)
                                      ^
osmclient/sol005/nsi.py:275:56: E126 continuation line over-indented for hanging indent
                                                       self._apiBase, nsi['_id'],
                                                       ^
osmclient/sol005/nsi.py:276:70: E202 whitespace before ')'
                                                       filter_string) )
                                                                     ^
osmclient/sol005/nsi.py:277:13: E265 block comment should start with '# '
            #print('HTTP CODE: {}'.format(http_code))
            ^
osmclient/sol005/nsi.py:278:13: E265 block comment should start with '# '
            #print('RESP: {}'.format(resp))
            ^
osmclient/sol005/nsi.py:279:13: E265 block comment should start with '# '
            #if http_code == 200:
            ^
osmclient/sol005/nsi.py:284:18: E111 indentation is not a multiple of 4
                 raise ClientException('unexpected response from server')
                 ^
osmclient/sol005/nsi.py:284:18: E117 over-indented
                 raise ClientException('unexpected response from server')
                 ^
osmclient/sol005/nsi.py:285:13: E265 block comment should start with '# '
            #else:
            ^
osmclient/sol005/nsi.py:295:20: E225 missing whitespace around operator
            message="failed to get operation list of NSI {}:\nerror:\n{}".format(
                   ^
osmclient/sol005/nsi.py:308:39: E128 continuation line under-indented for visual indent
                                      self._apiVersion, self._apiResource)
                                      ^
osmclient/sol005/nsi.py:310:13: E265 block comment should start with '# '
            #print('HTTP CODE: {}'.format(http_code))
            ^
osmclient/sol005/nsi.py:311:13: E265 block comment should start with '# '
            #print('RESP: {}'.format(resp))
            ^
osmclient/sol005/nsi.py:312:13: E265 block comment should start with '# '
            #if http_code == 200:
            ^
osmclient/sol005/nsi.py:318:13: E265 block comment should start with '# '
            #else:
            ^
osmclient/sol005/nsi.py:328:20: E225 missing whitespace around operator
            message="failed to get status of operation {}:\nerror:\n{}".format(
                   ^
osmclient/sol005/nsi.py:343:13: E265 block comment should start with '# '
            #print('OP_NAME: {}'.format(op_name))
            ^
osmclient/sol005/nsi.py:344:13: E265 block comment should start with '# '
            #print('OP_DATA: {}'.format(json.dumps(op_data)))
            ^
osmclient/sol005/nsi.py:346:13: E265 block comment should start with '# '
            #print('HTTP CODE: {}'.format(http_code))
            ^
osmclient/sol005/nsi.py:347:13: E265 block comment should start with '# '
            #print('RESP: {}'.format(resp))
            ^
osmclient/sol005/nsi.py:348:13: E265 block comment should start with '# '
            #if http_code in (200, 201, 202, 204):
            ^
osmclient/sol005/nsi.py:353:35: E126 continuation line over-indented for hanging indent
                                  resp))
                                  ^
osmclient/sol005/nsi.py:355:13: E265 block comment should start with '# '
            #else:
            ^
osmclient/sol005/nsi.py:364:20: E225 missing whitespace around operator
            message="failed to exec operation {}:\nerror:\n{}".format(
                   ^
osmclient/sol005/nsi.py:368:1: W391 blank line at end of file

^
osmclient/sol005/osmrepo.py:147:108: W504 line break after binary operator
        if ((pkgtype == 'vnf' and (pkg_descriptor.get('vnfd') or pkg_descriptor.get('vnfd:vnfd_catalog'))) or
                                                                                                           ^
osmclient/sol005/project.py:48:9: E265 block comment should start with '# '
        #print('HTTP CODE: {}'.format(http_code))
        ^
osmclient/sol005/project.py:49:9: E265 block comment should start with '# '
        #print('RESP: {}'.format(resp))
        ^
osmclient/sol005/project.py:50:9: E265 block comment should start with '# '
        #if http_code in (200, 201, 202, 204):
        ^
osmclient/sol005/project.py:57:9: E265 block comment should start with '# '
        #else:
        ^
osmclient/sol005/project.py:73:46: E128 continuation line under-indented for visual indent
                                             postfields_dict=project_changes,
                                             ^
osmclient/sol005/project.py:74:46: E128 continuation line under-indented for visual indent
                                             skip_query_admin=True)
                                             ^
osmclient/sol005/project.py:86:9: E265 block comment should start with '# '
        #else:
        ^
osmclient/sol005/project.py:107:9: E265 block comment should start with '# '
        #print('HTTP CODE: {}'.format(http_code))
        ^
osmclient/sol005/project.py:108:9: E265 block comment should start with '# '
        #print('RESP: {}'.format(resp))
        ^
osmclient/sol005/project.py:132:66: E231 missing whitespace after ','
        _, resp = self._http.get2_cmd('{}{}'.format(self._apiBase,filter_string),
                                                                 ^
osmclient/sol005/project.py:133:53: E127 continuation line over-indented for visual indent
                                                    skip_query_admin=True)
                                                    ^
osmclient/sol005/project.py:134:9: E265 block comment should start with '# '
        #print('RESP: {}'.format(resp))
        ^
osmclient/sol005/project.py:153:1: W391 blank line at end of file

^
osmclient/sol005/package.py:21:1: E265 block comment should start with '# '
#from os import stat
^
osmclient/sol005/package.py:22:1: E265 block comment should start with '# '
#from os.path import basename
^
osmclient/sol005/package.py:93:13: E265 block comment should start with '# '
            #endpoint = '/nsds' if pkg_type['type'] == 'nsd' else '/vnfds'
            ^
osmclient/sol005/package.py:94:13: E265 block comment should start with '# '
            #print('Endpoint: {}'.format(endpoint))
            ^
osmclient/sol005/package.py:97:13: E265 block comment should start with '# '
            #headers['Content-Type'] = 'application/binary'
            ^
osmclient/sol005/package.py:99:13: E265 block comment should start with '# '
            #headers['Content-Filename'] = basename(filename)
            ^
osmclient/sol005/package.py:100:13: E265 block comment should start with '# '
            #file_size = stat(filename).st_size
            ^
osmclient/sol005/package.py:101:13: E265 block comment should start with '# '
            #headers['Content-Range'] = 'bytes 0-{}/{}'.format(file_size - 1, file_size)
            ^
osmclient/sol005/package.py:103:47: E231 missing whitespace after ','
            http_header = ['{}: {}'.format(key,val)
                                              ^
osmclient/sol005/package.py:104:27: E128 continuation line under-indented for visual indent
                          for (key,val) in list(headers.items())]
                          ^
osmclient/sol005/package.py:104:35: E231 missing whitespace after ','
                          for (key,val) in list(headers.items())]
                                  ^
osmclient/sol005/package.py:107:13: E265 block comment should start with '# '
            #print('HTTP CODE: {}'.format(http_code))
            ^
osmclient/sol005/package.py:108:13: E265 block comment should start with '# '
            #print('RESP: {}'.format(resp))
            ^
osmclient/sol005/package.py:109:13: E265 block comment should start with '# '
            #if http_code in (200, 201, 202, 204):
            ^
osmclient/sol005/package.py:114:40: E126 continuation line over-indented for hanging indent
                                       resp))
                                       ^
osmclient/sol005/repo.py:24:1: E302 expected 2 blank lines, found 1
class Repo(object):
^
osmclient/sol005/repo.py:37:40: E128 continuation line under-indented for visual indent
                                       postfields_dict=repo)
                                       ^
osmclient/sol005/repo.py:38:9: E265 block comment should start with '# '
        #print 'HTTP CODE: {}'.format(http_code)
        ^
osmclient/sol005/repo.py:39:9: E265 block comment should start with '# '
        #print 'RESP: {}'.format(resp)
        ^
osmclient/sol005/repo.py:40:9: E265 block comment should start with '# '
        #if http_code in (200, 201, 202, 204):
        ^
osmclient/sol005/repo.py:47:9: E265 block comment should start with '# '
        #else:
        ^
osmclient/sol005/repo.py:59:83: E231 missing whitespace after ','
        http_code, resp = self._http.put_cmd(endpoint='{}/{}'.format(self._apiBase,repo_dict['_id']),
                                                                                  ^
osmclient/sol005/repo.py:60:40: E128 continuation line under-indented for visual indent
                                       postfields_dict=repo)
                                       ^
osmclient/sol005/repo.py:63:9: E265 block comment should start with '# '
        #if http_code in (200, 201, 202, 204):
        ^
osmclient/sol005/repo.py:65:9: E265 block comment should start with '# '
        #else:
        ^
osmclient/sol005/repo.py:92:42: E128 continuation line under-indented for visual indent
                                         repo_id, querystring))
                                         ^
osmclient/sol005/repo.py:93:9: E265 block comment should start with '# '
        #print 'HTTP CODE: {}'.format(http_code)
        ^
osmclient/sol005/repo.py:94:9: E265 block comment should start with '# '
        #print 'RESP: {}'.format(resp)
        ^
osmclient/sol005/repo.py:115:66: E231 missing whitespace after ','
        _, resp = self._http.get2_cmd('{}{}'.format(self._apiBase,filter_string))
                                                                 ^
osmclient/sol005/repo.py:128:71: E231 missing whitespace after ','
            _, resp = self._http.get2_cmd('{}/{}'.format(self._apiBase,repo_id))
                                                                      ^
osmclient/sol005/repo.py:136:1: W391 blank line at end of file

^
osmclient/sol005/client.py:21:1: E265 block comment should start with '# '
#from osmclient.v1 import vca
^
osmclient/sol005/client.py:74:50: E231 missing whitespace after ','
            'https://{}:{}/osm'.format(self._host,self._so_port), **kwargs)
                                                 ^
osmclient/sol005/client.py:132:9: E265 block comment should start with '# '
        #print(http_code, resp)
        ^
osmclient/sol005/client.py:144:17: E711 comparison to None should be 'if cond is not None:'
        if host != None:
                ^
osmclient/sol005/client.py:145:23: E225 missing whitespace around operator
            self._host=host
                      ^
osmclient/sol005/client.py:146:13: E221 multiple spaces before operator
        port  = kwargs.pop('port', None)
            ^
osmclient/sol005/client.py:147:17: E711 comparison to None should be 'if cond is not None:'
        if port != None:
                ^
osmclient/sol005/client.py:148:26: E225 missing whitespace around operator
            self._so_port=port
                         ^
pylint create: /tmp/.tox/pylint
pylint installdeps: -r/opt/jenkins/workspace/osmclient-stage_2-merge_v9.0/requirements.txt, -r/opt/jenkins/workspace/osmclient-stage_2-merge_v9.0/requirements-dev.txt, -r/opt/jenkins/workspace/osmclient-stage_2-merge_v9.0/requirements-test.txt, pylint
pylint develop-inst: /opt/jenkins/workspace/osmclient-stage_2-merge_v9.0
pylint installed: astroid==2.9.0,bitarray==2.3.4,certifi==2020.12.5,chardet==4.0.0,click==7.1.2,coverage==5.5,enum34==1.1.10,idna==2.10,importlib-metadata==4.8.2,isort==5.10.1,Jinja2==2.11.3,lazy-object-proxy==1.6.0,lxml==4.7.1,MarkupSafe==1.1.1,mccabe==0.6.1,mock==4.0.3,nose2==0.10.0,osm-im @ git+https://osm.etsi.org/gerrit/osm/IM.git@35517bbfdb9b9e5e26ca1909d9ecf6398a8bb062,-e git+https://osm.etsi.org/gerrit/osm/osmclient.git@1cbff09ebd242dcba9e0011c083e13e5623f1f5d#egg=osmclient,packaging==20.9,platformdirs==2.4.0,prettytable==2.1.0,pyang==2.5.2,pyangbind==0.8.1,pycurl==7.43.0.6,pylint==2.12.2,pyparsing==2.4.7,python-magic==0.4.22,PyYAML==5.4.1,regex==2021.11.10,requests==2.25.1,six==1.16.0,toml==0.10.2,typed-ast==1.5.1,typing_extensions==4.0.1,urllib3==1.26.4,verboselogs==1.7,wcwidth==0.2.5,wrapt==1.13.3,zipp==3.6.0
pylint run-test-pre: PYTHONHASHSEED='1630188128'
pylint run-test: commands[0] | - pylint -E osmclient
************* Module osmclient.client
osmclient/client.py:47:34: E1101: Module 'logging' has no 'VERBOSE' member (no-member)
************* Module osmclient.scripts.osm
osmclient/scripts/osm.py:4455:8: E1120: No value for argument 'ctx' in function call (no-value-for-parameter)
************* Module osmclient.common.http
osmclient/common/http.py:53:8: E1101: Instance of 'Http' has no '_logger' member (no-member)
osmclient/common/http.py:56:8: E1101: Instance of 'Http' has no '_logger' member (no-member)
osmclient/common/http.py:59:12: E1101: Instance of 'Http' has no '_logger' member (no-member)
osmclient/common/http.py:68:8: E1101: Instance of 'Http' has no '_logger' member (no-member)
osmclient/common/http.py:71:8: E1101: Instance of 'Http' has no '_logger' member (no-member)
osmclient/common/http.py:74:12: E1101: Instance of 'Http' has no '_logger' member (no-member)
osmclient/common/http.py:95:8: E1101: Instance of 'Http' has no '_logger' member (no-member)
osmclient/common/http.py:98:8: E1101: Instance of 'Http' has no '_logger' member (no-member)
osmclient/common/http.py:101:12: E1101: Instance of 'Http' has no '_logger' member (no-member)
************* Module osmclient.sol005.pdud
osmclient/sol005/pdud.py:137:8: E1123: Unexpected keyword argument 'filename' in method call (unexpected-keyword-arg)
osmclient/sol005/pdud.py:137:8: E1120: No value for argument 'pdu' in method call (no-value-for-parameter)
safety create: /tmp/.tox/safety
safety installdeps: -r/opt/jenkins/workspace/osmclient-stage_2-merge_v9.0/requirements.txt, safety
safety develop-inst: /opt/jenkins/workspace/osmclient-stage_2-merge_v9.0
safety installed: certifi==2020.12.5,chardet==4.0.0,click==7.1.2,dparse==0.5.1,idna==2.10,importlib-metadata==4.8.2,Jinja2==2.11.3,MarkupSafe==1.1.1,-e git+https://osm.etsi.org/gerrit/osm/osmclient.git@1cbff09ebd242dcba9e0011c083e13e5623f1f5d#egg=osmclient,packaging==20.9,prettytable==2.1.0,pycurl==7.43.0.6,pyparsing==2.4.7,python-magic==0.4.22,PyYAML==5.4.1,requests==2.25.1,safety==1.10.3,toml==0.10.2,typing_extensions==4.0.1,urllib3==1.26.4,verboselogs==1.7,wcwidth==0.2.5,zipp==3.6.0
safety run-test-pre: PYTHONHASHSEED='1630188128'
safety run-test: commands[0] | - safety check --full-report
+==============================================================================+
|                                                                              |
|                               /$$$$$$            /$$                         |
|                              /$$__  $$          | $$                         |
|           /$$$$$$$  /$$$$$$ | $$  \__//$$$$$$  /$$$$$$   /$$   /$$           |
|          /$$_____/ |____  $$| $$$$   /$$__  $$|_  $$_/  | $$  | $$           |
|         |  $$$$$$   /$$$$$$$| $$_/  | $$$$$$$$  | $$    | $$  | $$           |
|          \____  $$ /$$__  $$| $$    | $$_____/  | $$ /$$| $$  | $$           |
|          /$$$$$$$/|  $$$$$$$| $$    |  $$$$$$$  |  $$$$/|  $$$$$$$           |
|         |_______/  \_______/|__/     \_______/   \___/   \____  $$           |
|                                                          /$$  | $$           |
|                                                         |  $$$$$$/           |
|  by pyup.io                                              \______/            |
|                                                                              |
+==============================================================================+
| REPORT                                                                       |
| checked 26 packages, using free DB (updated once a month)                    |
+==============================================================================+
| No known security vulnerabilities found.                                     |
+==============================================================================+
___________________________________ summary ____________________________________
  black: commands succeeded
  cover: commands succeeded
  flake8: commands succeeded
  pylint: commands succeeded
  safety: commands succeeded
  congratulations :)