@click.option("--description", help="human readable description")
@click.option(
"--vim_account",
- help="list of VIM accounts (in the same VIM) that can reach this PDU",
+ help="list of VIM accounts (in the same VIM) that can reach this PDU\n"
+ + "The format for multiple VIMs is --vim_account <vim_account_id_1> "
+ + "--vim_account <vim_account_id_2> ... --vim_account <vim_account_id_N>",
multiple=True,
)
@click.option(
"--descriptor_file",
default=None,
- help="PDU descriptor file (as an alternative to using the other arguments",
+ help="PDU descriptor file (as an alternative to using the other arguments)",
)
@click.pass_context
def pdu_create(
):
"""creates a new Physical Deployment Unit (PDU)"""
logger.debug("")
- # try:
+
check_client_version(ctx.obj, ctx.command.name)
+
+ pdu = create_pdu_dictionary(name, pdu_type, interface, description, vim_account, descriptor_file)
+ ctx.obj.pdu.create(pdu)
+
+
+########################
+# UPDATE PDU operation #
+########################
+
+
+@cli_osm.command(
+ name="pdu-update", short_help="updates a Physical Deployment Unit to the catalog"
+)
+@click.argument("name")
+@click.option("--newname", help="New name for the Physical Deployment Unit")
+@click.option("--pdu_type", help="type of PDU (e.g. router, firewall, FW001)")
+@click.option(
+ "--interface",
+ help="interface(s) of the PDU: name=<NAME>,mgmt=<true|false>,ip-address=<IP_ADDRESS>"
+ + "[,type=<overlay|underlay>][,mac-address=<MAC_ADDRESS>][,vim-network-name=<VIM_NET_NAME>]",
+ multiple=True,
+)
+@click.option("--description", help="human readable description")
+@click.option(
+ "--vim_account",
+ help="list of VIM accounts (in the same VIM) that can reach this PDU\n"
+ + "The format for multiple VIMs is --vim_account <vim_account_id_1> "
+ + "--vim_account <vim_account_id_2> ... --vim_account <vim_account_id_N>",
+ multiple=True,
+)
+@click.option(
+ "--descriptor_file",
+ default=None,
+ help="PDU descriptor file (as an alternative to using the other arguments)",
+)
+@click.pass_context
+def pdu_update(
+ ctx, name, newname, pdu_type, interface, description, vim_account, descriptor_file
+):
+ """Updates a new Physical Deployment Unit (PDU)"""
+ logger.debug("")
+
+ check_client_version(ctx.obj, ctx.command.name)
+
+ update = True
+
+ if not newname:
+ newname = name
+
+ pdu = create_pdu_dictionary(newname, pdu_type, interface, description, vim_account, descriptor_file, update)
+ ctx.obj.pdu.update(name, pdu)
+
+
+def create_pdu_dictionary(name, pdu_type, interface, description, vim_account, descriptor_file, update=False):
+
+ logger.debug("")
pdu = {}
+
if not descriptor_file:
- if not name:
- raise ClientException(
- 'in absence of descriptor file, option "--name" is mandatory'
- )
- if not pdu_type:
- raise ClientException(
- 'in absence of descriptor file, option "--pdu_type" is mandatory'
- )
- if not interface:
- raise ClientException(
- 'in absence of descriptor file, option "--interface" is mandatory (at least once)'
- )
- if not vim_account:
- raise ClientException(
- 'in absence of descriptor file, option "--vim_account" is mandatory (at least once)'
- )
+ if not update:
+ if not name:
+ raise ClientException(
+ 'in absence of descriptor file, option "--name" is mandatory'
+ )
+ if not pdu_type:
+ raise ClientException(
+ 'in absence of descriptor file, option "--pdu_type" is mandatory'
+ )
+ if not interface:
+ raise ClientException(
+ 'in absence of descriptor file, option "--interface" is mandatory (at least once)'
+ )
+ if not vim_account:
+ raise ClientException(
+ 'in absence of descriptor file, option "--vim_account" is mandatory (at least once)'
+ )
else:
with open(descriptor_file, "r") as df:
pdu = yaml.safe_load(df.read())
new_iface["mgmt"] = new_iface.get("mgmt", "false").lower() == "true"
ifaces_list.append(new_iface)
pdu["interfaces"] = ifaces_list
- ctx.obj.pdu.create(pdu)
- # except ClientException as e:
- # print(str(e))
- # exit(1)
-
+ return pdu
####################
# UPDATE operations
default="kube-system",
help="namespace to be used for its operation, defaults to `kube-system`",
)
+@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.option(
"--cni",
default=None,
# 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, cni
+ ctx, name, creds, version, vim, k8s_nets, description, namespace, wait, cni
):
"""adds a K8s cluster to OSM
cluster["namespace"] = namespace
if cni:
cluster["cni"] = yaml.safe_load(cni)
- ctx.obj.k8scluster.create(name, cluster)
+ ctx.obj.k8scluster.create(name, cluster, wait)
# except ClientException as e:
# print(str(e))
# exit(1)
"--namespace",
help="namespace to be used for its operation, defaults to `kube-system`",
)
+@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.option(
"--cni", help="list of CNI plugins, in JSON inline format, used in the cluster"
)
@click.pass_context
def k8scluster_update(
- ctx, name, newname, creds, version, vim, k8s_nets, description, namespace, cni
+ ctx, name, newname, creds, version, vim, k8s_nets, description, namespace, wait, cni
):
"""updates a K8s cluster
cluster["namespace"] = namespace
if cni:
cluster["cni"] = yaml.safe_load(cni)
- ctx.obj.k8scluster.update(name, cluster)
+ ctx.obj.k8scluster.update(name, cluster, wait)
# except ClientException as e:
# print(str(e))
# exit(1)
@click.option(
"--force", is_flag=True, help="forces the deletion from the DB (not recommended)"
)
-# @click.option('--wait',
-# is_flag=True,
-# help='do not return the control immediately, but keep it until the operation is completed, or timeout')
+@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 k8scluster_delete(ctx, name, force):
+def k8scluster_delete(ctx, name, force, wait):
"""deletes a K8s cluster
NAME: name or ID of the K8s cluster to be deleted
"""
# try:
check_client_version(ctx.obj, ctx.command.name)
- ctx.obj.k8scluster.delete(name, force=force)
+ ctx.obj.k8scluster.delete(name, force, wait)
# except ClientException as e:
# print(str(e))
# exit(1)
@click.option(
"--netslice-vlds", default=1, help="(NST) Number of netslice vlds. Default 1"
)
+@click.option(
+ "--old", default=False, is_flag=True, help="Flag to create a descriptor using the previous OSM format (pre SOL006, OSM<9)"
+)
@click.pass_context
def package_create(
ctx,
detailed,
netslice_subnets,
netslice_vlds,
+ old,
):
"""
Creates an OSM NS, VNF, NST package
detailed=detailed,
netslice_subnets=netslice_subnets,
netslice_vlds=netslice_vlds,
+ old=old,
)
print(resp)
# except ClientException as inst: