blob: 3dc3c3858b7903a4fc90ca15163ad24a33e39a16 [file] [log] [blame]
# Copyright ETSI Contributors and Others.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import click
from osmclient.common.exceptions import ClientException
from osmclient.cli_commands import utils
from prettytable import PrettyTable
import json
import logging
logger = logging.getLogger("osmclient")
@click.command(
name="subscription-create",
short_help="creates a new subscription to a specific event",
)
@click.option(
"--event_type",
# type=click.Choice(['ns', 'nspkg', 'vnfpkg'], case_sensitive=False))
type=click.Choice(["ns"], case_sensitive=False),
help="event type to be subscribed (for the moment, only ns is supported)",
)
@click.option("--event", default=None, help="specific yaml configuration for the event")
@click.option(
"--event_file", default=None, help="specific yaml configuration file for the event"
)
@click.pass_context
def subscription_create(ctx, event_type, event, event_file):
"""creates a new subscription to a specific event"""
logger.debug("")
utils.check_client_version(ctx.obj, ctx.command.name)
if event_file:
if event:
raise ClientException(
'"--event" option is incompatible with "--event_file" option'
)
with open(event_file, "r") as cf:
event = cf.read()
ctx.obj.subscription.create(event_type, event)
@click.command(name="subscription-delete", short_help="deletes a subscription")
@click.option(
"--event_type",
# type=click.Choice(['ns', 'nspkg', 'vnfpkg'], case_sensitive=False))
type=click.Choice(["ns"], case_sensitive=False),
help="event type to be subscribed (for the moment, only ns is supported)",
)
@click.argument("subscription_id")
@click.option(
"--force", is_flag=True, help="forces the deletion bypassing pre-conditions"
)
@click.pass_context
def subscription_delete(ctx, event_type, subscription_id, force):
"""deletes a subscription
SUBSCRIPTION_ID: ID of the subscription to be deleted
"""
logger.debug("")
utils.check_client_version(ctx.obj, ctx.command.name)
ctx.obj.subscription.delete(event_type, subscription_id, force)
@click.command(name="subscription-list", short_help="list all subscriptions")
@click.option(
"--event_type",
# type=click.Choice(['ns', 'nspkg', 'vnfpkg'], case_sensitive=False))
type=click.Choice(["ns"], case_sensitive=False),
help="event type to be subscribed (for the moment, only ns is supported)",
)
@click.option(
"--filter",
default=None,
multiple=True,
help="restricts the list to the subscriptions matching the filter",
)
@click.pass_context
def subscription_list(ctx, event_type, filter):
"""list all subscriptions"""
logger.debug("")
utils.check_client_version(ctx.obj, ctx.command.name)
if filter:
filter = "&".join(filter)
resp = ctx.obj.subscription.list(event_type, filter)
table = PrettyTable(["id", "filter", "CallbackUri"])
for sub in resp:
table.add_row(
[
sub["_id"],
utils.wrap_text(text=json.dumps(sub["filter"], indent=2), width=70),
sub["CallbackUri"],
]
)
table.align = "l"
print(table)
@click.command(
name="subscription-show", short_help="shows the details of a subscription"
)
@click.argument("subscription_id")
@click.option(
"--event_type",
# type=click.Choice(['ns', 'nspkg', 'vnfpkg'], case_sensitive=False))
type=click.Choice(["ns"], case_sensitive=False),
help="event type to be subscribed (for the moment, only ns is supported)",
)
@click.option(
"--filter",
multiple=True,
help="restricts the information to the fields in the filter",
)
@click.pass_context
def subscription_show(ctx, event_type, subscription_id, filter):
"""shows the details of a subscription
SUBSCRIPTION_ID: ID of the subscription
"""
logger.debug("")
resp = ctx.obj.subscription.get(subscription_id)
table = PrettyTable(["key", "attribute"])
for k, v in list(resp.items()):
if not filter or k in filter:
table.add_row([k, utils.wrap_text(text=json.dumps(v, indent=2), width=100)])
table.align = "l"
print(table)