help="do not return the control immediately, but keep it "
"until the operation is completed, or timeout",
)
+@click.option("--timeout", default=None, help="ns deployment timeout")
@click.pass_context
def ns_create(
ctx,
config,
config_file,
wait,
+ timeout
):
"""creates a new NS instance"""
logger.debug("")
ssh_keys=ssh_keys,
account=vim_account,
wait=wait,
+ timeout=timeout,
)
# except ClientException as e:
# print(str(e))
)
@click.option("--vca", default=None, help="VCA to be used in this VIM account")
@click.option("--creds", default=None, help="credentials file (only applycable for GCP VIM type)")
+@click.option("--prometheus_config_file", default=None, help="Prometheus configuration to get VIM data")
@click.pass_context
def vim_create(
ctx,
wait,
vca,
creds,
+ prometheus_config_file
):
"""creates a new VIM account"""
logger.debug("")
if sdn_port_mapping:
check_client_version(ctx.obj, "--sdn_port_mapping")
vim = {}
+ if prometheus_config_file:
+ with open(prometheus_config_file) as prometheus_file:
+ prometheus_config_dict = json.load(prometheus_file)
+ vim["prometheus-config"] = prometheus_config_dict
+
vim["vim-username"] = user
vim["vim-password"] = password
vim["vim-url"] = auth_url
"until the operation is completed, or timeout",
)
@click.option("--creds", default=None, help="credentials file (only applycable for GCP VIM type)")
+@click.option("--prometheus_config_file", default=None, help="Prometheus configuration to get VIM data")
@click.pass_context
def vim_update(
ctx,
sdn_port_mapping,
wait,
creds,
+ prometheus_config_file
):
"""updates a VIM account
if creds:
with open(creds, "r") as cf:
vim_config["credentials"] = yaml.safe_load(cf.read())
+ if prometheus_config_file:
+ with open(prometheus_config_file) as prometheus_file:
+ prometheus_config_dict = json.load(prometheus_file)
+ vim["prometheus-config"] = prometheus_config_dict
logger.info(f"VIM: {vim}, VIM config: {vim_config}")
ctx.obj.vim.update(name, vim, vim_config, sdn_controller, sdn_port_mapping, wait=wait)
# except ClientException as e:
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) ...]}"''',
)
+@click.option(
+ "--init-helm2/--skip-helm2",
+ required=False,
+ default=True,
+ help="Initialize helm v2",
+)
+@click.option(
+ "--init-helm3/--skip-helm3",
+ required=False,
+ default=True,
+ help="Initialize helm v3",
+)
+@click.option(
+ "--init-jujubundle/--skip-jujubundle",
+ required=False,
+ default=True,
+ help="Initialize juju-bundle",
+)
@click.option("--description", default=None, help="human readable description")
@click.option(
"--namespace",
# help='do not return the control immediately, but keep it until the operation is completed, or timeout')
@click.pass_context
def k8scluster_add(
- ctx, name, creds, version, vim, k8s_nets, description, namespace, wait, cni
+ ctx, name, creds, version, vim, k8s_nets, init_helm2, init_helm3, init_jujubundle, description, namespace, wait, cni
):
"""adds a K8s cluster to OSM
cluster["k8s_version"] = version
cluster["vim_account"] = vim
cluster["nets"] = yaml.safe_load(k8s_nets)
+ if not (init_helm2 and init_jujubundle and init_helm3):
+ cluster["deployment_methods"] = {"helm-chart": init_helm2,
+ "juju-bundle": init_jujubundle,
+ "helm-chart-v3": init_helm3}
if description:
cluster["description"] = description
if namespace:
"Version",
"VIM",
"K8s-nets",
+ "Deployment methods",
"Operational State",
"Op. state (details)",
"Description",
cluster["k8s_version"],
vim_info,
json.dumps(cluster["nets"]),
+ json.dumps(cluster["deployment_methods"]),
cluster["_admin"]["operationalState"],
op_state_details,
trunc_text(cluster.get("description") or "", 40),
multiple=True,
help="remove role(s) in a project. Can be used several times: 'project,role1[,role2,...]'",
)
+@click.option(
+ "--change_password",
+ "change_password",
+ help="user's current password"
+)
+@click.option(
+ "--new_password",
+ "new_password",
+ help="user's new password to update in expiry condition"
+)
@click.pass_context
def user_update(
ctx,
remove_project,
add_project_role,
remove_project_role,
+ change_password,
+ new_password,
):
"""Update a user information
REMOVE_PROJECT: deleting mappings for project/role(s)
ADD_PROJECT_ROLE: adding mappings for project/role(s)
REMOVE_PROJECT_ROLE: removing mappings for project/role(s)
+ CHANGE_PASSWORD: user's current password to change
+ NEW_PASSWORD: user's new password to update in expiry condition
"""
logger.debug("")
user = {}
user["remove-project"] = remove_project
user["add-project-role"] = add_project_role
user["remove-project-role"] = remove_project_role
+ user["change_password"] = change_password
+ user["new_password"] = new_password
# try:
check_client_version(ctx.obj, ctx.command.name)
- ctx.obj.user.update(username, user)
+ if not user.get("change_password"):
+ ctx.obj.user.update(username, user)
+ else:
+ ctx.obj.user.update(username, user, pwd_change=True)
# except ClientException as e:
# print(str(e))
# exit(1)
# exit(1)
+@cli_osm.command(
+ name="ns-update", short_help="executes an update of a Network Service."
+)
+@click.argument("ns_name")
+@click.option(
+ "--updatetype", required=True, type=str, help="available types: CHANGE_VNFPKG"
+)
+@click.option(
+ "--config",
+ required=True,
+ type=str,
+ help="extra information for update operation as YAML/JSON inline string as --config"
+ " '{changeVnfPackageData:[{vnfInstanceId: xxx, vnfdId: yyy}]}'",
+)
+@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 update(ctx, ns_name, updatetype, config, timeout, wait):
+ """Executes an update of a Network Service.
+
+ The update will check new revisions of the Network Functions that are part of the
+ Network Service, and it will update them if needed.
+ Sample update command: osm ns-update ns_instance_id --updatetype CHANGE_VNFPKG
+ --config '{changeVnfPackageData: [{vnfInstanceId: id_x,vnfdId: id_y}]}' --timeout 300 --wait
+
+ NS_NAME: Network service instance name or ID.
+
+ """
+ op_data = {
+ "timeout": timeout,
+ "updateType": updatetype,
+ }
+ if config:
+ op_data["config"] = yaml.safe_load(config)
+
+ check_client_version(ctx.obj, ctx.command.name)
+ ctx.obj.ns.update(ns_name, op_data, wait=wait)
+
+
@cli_osm.command(name="alarm-show", short_help="show alarm details")
@click.argument("uuid")
@click.pass_context
table = PrettyTable(["key", "attribute"])
try:
# Arrange and return the response data
- resp = resp.replace("ObjectId", "")
- alarm = eval(resp)
+ alarm = resp.replace("ObjectId", "")
for key in alarm_filter:
if key == "uuid":
value = alarm.get(key)
if resp:
# return the response data in a table
resp = resp.replace("ObjectId", "")
- resp = eval(resp)
for alarm in resp:
table.add_row(
[