New version of V1 shell
This new version makes uses of the models.
This commit is contained in:
parent
4e48c0e892
commit
a712e7e1cb
@ -12,18 +12,19 @@
|
||||
|
||||
import logging
|
||||
|
||||
from oslo.serialization import jsonutils
|
||||
from oslo_serialization import jsonutils
|
||||
|
||||
from senlinclient.common import exc
|
||||
from senlinclient.common.i18n import _
|
||||
from senlinclient.common import utils
|
||||
from senlinclient.v1 import models
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def do_build_info(sc, args):
|
||||
'''Retrieve build information.'''
|
||||
result = sc.build_info.build_info()
|
||||
result = sc.get(models.BuildInfo)
|
||||
formatters = {
|
||||
'api': utils.json_formatter,
|
||||
'engine': utils.json_formatter,
|
||||
@ -36,8 +37,8 @@ def do_build_info(sc, args):
|
||||
|
||||
def do_profile_type_list(sc, args):
|
||||
'''List the available profile types.'''
|
||||
types = sc.profile_types.list()
|
||||
utils.print_list(types, ['profile_type'], sortby_index=0)
|
||||
types = sc.list_short(models.ProfileType)
|
||||
utils.print_list(types, ['name'], sortby_index=0)
|
||||
|
||||
|
||||
@utils.arg('profile_type', metavar='<PROFILE_TYPE>',
|
||||
@ -45,7 +46,8 @@ def do_profile_type_list(sc, args):
|
||||
def do_profile_type_show(sc, args):
|
||||
'''Show the profile type.'''
|
||||
try:
|
||||
profile_type = sc.profile_types.get(args.profile_type)
|
||||
params = {'profile_type': args.profile_type}
|
||||
profile_type = sc.get(models.ProfileTypeSchema, params)
|
||||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError(
|
||||
_('Profile Type not found: %s') % args.profile_type)
|
||||
@ -61,7 +63,8 @@ def do_profile_type_show(sc, args):
|
||||
def do_profile_type_template(sc, args):
|
||||
'''Generate a template based on a profile type.'''
|
||||
try:
|
||||
template = sc.profile_types.generate_template(args.profile_type)
|
||||
params = {'profile_type': args.profile_type}
|
||||
template = sc.get(models.ProfileTypeTemplate, params)
|
||||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError(
|
||||
_('Profile Type %s not found.') % args.profile_type)
|
||||
@ -80,8 +83,8 @@ def do_profile_type_template(sc, args):
|
||||
|
||||
def do_policy_type_list(sc, args):
|
||||
'''List the available policy types.'''
|
||||
types = sc.policy_types.list()
|
||||
utils.print_list(types, ['policy_type'], sortby_index=0)
|
||||
types = sc.list_short(models.PolicyType)
|
||||
utils.print_list(types, ['name'], sortby_index=0)
|
||||
|
||||
|
||||
@utils.arg('policy_type', metavar='<POLICY_TYPE>',
|
||||
@ -89,7 +92,8 @@ def do_policy_type_list(sc, args):
|
||||
def do_policy_type_show(sc, args):
|
||||
'''Show the policy type.'''
|
||||
try:
|
||||
policy_type = sc.policy_types.get(args.policy_type)
|
||||
params = {'policy_type': args.policy_type}
|
||||
policy_type = sc.get(models.PolicyTypeSchema, params)
|
||||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError(
|
||||
_('Policy Type not found: %s') % args.policy_type)
|
||||
@ -105,7 +109,8 @@ def do_policy_type_show(sc, args):
|
||||
def do_policy_type_template(sc, args):
|
||||
'''Generate a template based on a policy type.'''
|
||||
try:
|
||||
template = sc.policy_types.generate_template(args.policy_type)
|
||||
params = {'policy_type': args.policy_type}
|
||||
template = sc.get(models.PolicyTypeTemplate, params)
|
||||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError(
|
||||
_('Policy Type %s not found.') % args.policy_type)
|
||||
@ -138,10 +143,10 @@ def do_policy_type_template(sc, args):
|
||||
'ID.'))
|
||||
def do_cluster_list(sc, args=None):
|
||||
'''List the user's clusters.'''
|
||||
kwargs = {}
|
||||
queries = {}
|
||||
fields = ['id', 'cluster_name', 'status', 'created_time']
|
||||
if args:
|
||||
kwargs = {'limit': args.limit,
|
||||
queries = {'limit': args.limit,
|
||||
'marker': args.marker,
|
||||
'filters': utils.format_parameters(args.filters),
|
||||
'show_deleted': args.show_deleted,
|
||||
@ -149,10 +154,7 @@ def do_cluster_list(sc, args=None):
|
||||
if args.show_nested:
|
||||
fields.append('parent')
|
||||
|
||||
# if args.global_tenant:
|
||||
# fields.insert(2, 'project')
|
||||
|
||||
clusters = sc.clusters.list(**kwargs)
|
||||
clusters = sc.list(models.Cluster, queries)
|
||||
utils.print_list(clusters, fields, sortby_index=3)
|
||||
|
||||
|
||||
@ -172,7 +174,7 @@ def do_cluster_list(sc, args=None):
|
||||
help=_('Name of the cluster to create.'))
|
||||
def do_cluster_create(sc, args):
|
||||
'''Create the cluster.'''
|
||||
fields = {
|
||||
params = {
|
||||
'name': args.name,
|
||||
'profile_id': args.profile,
|
||||
'tags': utils.format_parameters(args.tags),
|
||||
@ -180,7 +182,7 @@ def do_cluster_create(sc, args):
|
||||
'timeout': args.timeout
|
||||
}
|
||||
|
||||
sc.clusters.create(**fields)
|
||||
sc.create(models.Cluster, params)
|
||||
do_cluster_list(sc)
|
||||
|
||||
|
||||
@ -192,7 +194,8 @@ def do_cluster_delete(sc, args):
|
||||
|
||||
for cid in args.id:
|
||||
try:
|
||||
sc.clusters.delete(cid)
|
||||
query = {'id': cid}
|
||||
sc.delete(models.Cluster, query)
|
||||
except exc.HTTPNotFound as ex:
|
||||
failure_count += 1
|
||||
print(ex)
|
||||
@ -219,16 +222,16 @@ def do_cluster_delete(sc, args):
|
||||
def do_cluster_update(sc, args):
|
||||
'''Update the cluster.'''
|
||||
|
||||
fields = {
|
||||
params = {
|
||||
'profile_id': args.profile,
|
||||
'size': args.size,
|
||||
'tags': utils.format_parameters(args.tags),
|
||||
}
|
||||
|
||||
if args.timeout:
|
||||
fields['timeout'] = args.timeout
|
||||
params['timeout'] = args.timeout
|
||||
|
||||
sc.clusters.update(**fields)
|
||||
sc.update(models.Cluster, params)
|
||||
do_cluster_list(sc)
|
||||
|
||||
|
||||
@ -237,7 +240,8 @@ def do_cluster_update(sc, args):
|
||||
def do_cluster_show(sc, args):
|
||||
'''Show details of the cluster.'''
|
||||
try:
|
||||
cluster = sc.clusters.get(args.id)
|
||||
query = {'id': args.id}
|
||||
cluster = sc.get(models.Cluster, query)
|
||||
except exc.HTTPNotFound:
|
||||
raise exc.CommandError(_('Cluster not found: %s') % args.id)
|
||||
else:
|
||||
@ -268,7 +272,7 @@ def do_cluster_node_list(sc, args):
|
||||
'''List nodes from cluster.'''
|
||||
fields = ['id', 'name', 'index', 'status', 'physical_id', 'created_time']
|
||||
|
||||
kwargs = {
|
||||
query = {
|
||||
'cluster_id': args.id,
|
||||
'show_deleted': args.show_deleted,
|
||||
'filters': utils.format_parameters(args.filters),
|
||||
@ -277,7 +281,7 @@ def do_cluster_node_list(sc, args):
|
||||
}
|
||||
|
||||
try:
|
||||
nodes = sc.nodes.list(**kwargs)
|
||||
nodes = sc.list(models.ClusterNode, query)
|
||||
except exc.HTTPNotFound:
|
||||
msg = _('No node matching criteria is found')
|
||||
raise exc.CommandError(msg)
|
||||
@ -294,7 +298,8 @@ def do_cluster_node_add(sc, args):
|
||||
failure_count = 0
|
||||
for nid in args.nodes:
|
||||
try:
|
||||
sc.clusters.add_node(args.id, nid)
|
||||
params = {'cluster_id': args.id, 'id': nid}
|
||||
sc.create(models.ClusterNode, params)
|
||||
except Exception as ex:
|
||||
failure_count += 1
|
||||
print(ex)
|
||||
@ -314,7 +319,8 @@ def do_cluster_node_del(sc, args):
|
||||
failure_count = 0
|
||||
for nid in args.nodes:
|
||||
try:
|
||||
sc.clusters.del_node(args.id, nid)
|
||||
query = {'cluster_id': args.id, 'id': nid}
|
||||
sc.delete(models.ClusterNode, query)
|
||||
except Exception as ex:
|
||||
failure_count += 1
|
||||
print(ex)
|
||||
@ -329,7 +335,8 @@ def do_cluster_node_del(sc, args):
|
||||
help=_('Name or ID of cluster to operate on.'))
|
||||
def do_cluster_policy_list(sc, args):
|
||||
'''List policies from cluster.'''
|
||||
policies = sc.clusters.list_policy(args.id)
|
||||
query = {'id': args.id}
|
||||
policies = sc.list(models.ClusterPolicy, query)
|
||||
fields = ['id', 'name', 'enabled', 'level']
|
||||
utils.print_list(policies, fields, sortby_index=1)
|
||||
|
||||
@ -340,7 +347,8 @@ def do_cluster_policy_list(sc, args):
|
||||
help=_('Name or ID of cluster to operate on.'))
|
||||
def do_cluster_policy_attach(sc, args):
|
||||
'''Attach policy to cluster.'''
|
||||
sc.clusters.attach_policy(args.id, args.policy)
|
||||
params = {'cluster_id': args.id, 'policy_id': args.policy}
|
||||
sc.create(models.ClusterPolicy, params)
|
||||
do_cluster_policy_list(sc, args.id)
|
||||
|
||||
|
||||
@ -350,7 +358,8 @@ def do_cluster_policy_attach(sc, args):
|
||||
help=_('Name or ID of cluster to operate on.'))
|
||||
def do_cluster_policy_detach(sc, args):
|
||||
'''Detach policy from cluster.'''
|
||||
sc.clusters.detach_policy(args.id, args.policy)
|
||||
params = {'cluster_id': args.id, 'policy_id': args.policy}
|
||||
sc.delete(models.ClusterPolicy, params)
|
||||
do_cluster_policy_list(sc, args.id)
|
||||
|
||||
|
||||
@ -366,13 +375,14 @@ def do_cluster_policy_detach(sc, args):
|
||||
help=_('Name or ID of cluster to operate on.'))
|
||||
def do_cluster_policy_update(sc, args):
|
||||
'''Enable policy on cluster.'''
|
||||
kwargs = {
|
||||
params = {
|
||||
'cluster_id': args.id,
|
||||
'policy_id': args.policy,
|
||||
'cooldown': args.cooldown,
|
||||
'enabled': args.enabled,
|
||||
'level': args.level,
|
||||
}
|
||||
sc.clusters.update_policy(args.id, **kwargs)
|
||||
sc.update(models.ClusterPolicy, params)
|
||||
do_cluster_policy_list(sc, args.id)
|
||||
|
||||
|
||||
@ -394,7 +404,7 @@ def do_cluster_policy_update(sc, args):
|
||||
help=_('Name of the node to create.'))
|
||||
def do_node_create(sc, args):
|
||||
'''Create the node.'''
|
||||
fields = {
|
||||
params = {
|
||||
'name': args.name,
|
||||
'cluster_id': args.cluster,
|
||||
'profile_id': args.profile,
|
||||
@ -402,7 +412,7 @@ def do_node_create(sc, args):
|
||||
'tags': utils.format_parameters(args.tags),
|
||||
}
|
||||
|
||||
sc.nodes.create(**fields)
|
||||
sc.create(models.Node, params)
|
||||
do_node_list(sc)
|
||||
|
||||
|
||||
@ -414,7 +424,8 @@ def do_node_delete(sc, args):
|
||||
|
||||
for nid in args.id:
|
||||
try:
|
||||
sc.nodes.delete(nid)
|
||||
query = {'id': nid}
|
||||
sc.delete(models.Node, query)
|
||||
except exc.HTTPNotFound as ex:
|
||||
failure_count += 1
|
||||
print(ex)
|
||||
@ -439,14 +450,15 @@ def do_node_delete(sc, args):
|
||||
help=_('ID of node to update.'))
|
||||
def do_node_update(sc, args):
|
||||
'''Update the node.'''
|
||||
fields = {
|
||||
params = {
|
||||
'id': args.id,
|
||||
'name': args.name,
|
||||
'role': args.role,
|
||||
'profile': args.profile,
|
||||
'tags': utils.format_parameters(args.tags),
|
||||
}
|
||||
|
||||
sc.nodes.update(args.id, **fields)
|
||||
sc.update(models.Node, params)
|
||||
do_node_list(sc)
|
||||
|
||||
|
||||
@ -454,10 +466,12 @@ def do_node_update(sc, args):
|
||||
help=_('Name or ID of node to operate on.'))
|
||||
def do_node_leave(sc, args):
|
||||
'''Make node leave its current cluster.'''
|
||||
kwargs = {
|
||||
params = {
|
||||
'id': args.id,
|
||||
'cluster_id': '',
|
||||
}
|
||||
do_node_update(args.id, **kwargs)
|
||||
|
||||
sc.update(models.Node, params)
|
||||
do_node_list(sc)
|
||||
|
||||
|
||||
@ -467,10 +481,12 @@ def do_node_leave(sc, args):
|
||||
help=_('Name or ID of node to operate on.'))
|
||||
def do_node_join(sc, args):
|
||||
'''Make node join the specified cluster.'''
|
||||
kwargs = {
|
||||
params = {
|
||||
'id': args.id,
|
||||
'cluster_id': args.cluster,
|
||||
}
|
||||
do_node_update(args.id, **kwargs)
|
||||
|
||||
sc.update(models.Node, params)
|
||||
do_node_list(sc)
|
||||
|
||||
|
||||
@ -497,7 +513,7 @@ def do_node_list(sc, args):
|
||||
if args.global_tenant:
|
||||
fields.insert(2, 'project')
|
||||
|
||||
kwargs = {
|
||||
queries = {
|
||||
'cluster_id': args.cluster,
|
||||
'show_deleted': args.show_deleted,
|
||||
'filters': utils.format_parameters(args.filters),
|
||||
@ -507,7 +523,7 @@ def do_node_list(sc, args):
|
||||
}
|
||||
|
||||
try:
|
||||
nodes = sc.nodes.list(**kwargs)
|
||||
nodes = sc.list(models.Node, queries)
|
||||
except exc.HTTPNotFound:
|
||||
msg = _('No node matching criteria is found')
|
||||
raise exc.CommandError(msg)
|
||||
@ -520,7 +536,8 @@ def do_node_list(sc, args):
|
||||
def do_node_show(sc, args):
|
||||
'''Show detailed info about the specified node.'''
|
||||
try:
|
||||
node = sc.nodes.get(args.id)
|
||||
query = {'id': args.id}
|
||||
node = sc.get(models.Node, query)
|
||||
except exc.HTTPNotFound:
|
||||
msg = _('Node %(id)s is not found') % args.id
|
||||
raise exc.CommandError(msg)
|
||||
@ -558,7 +575,7 @@ def do_node_show(sc, args):
|
||||
help=_('Direction for sorting, where DIR can be "asc" or "desc".'))
|
||||
def do_event_list(sc, args):
|
||||
'''List events.'''
|
||||
fields = {
|
||||
queries = {
|
||||
'obj_id': args.id,
|
||||
'obj_name': args.name,
|
||||
'obj_type': args.type,
|
||||
@ -570,7 +587,7 @@ def do_event_list(sc, args):
|
||||
}
|
||||
|
||||
try:
|
||||
events = sc.events.list(**fields)
|
||||
events = sc.list(models.Event, queries)
|
||||
except exc.HTTPNotFound as ex:
|
||||
raise exc.CommandError(str(ex))
|
||||
|
||||
@ -584,7 +601,8 @@ def do_event_list(sc, args):
|
||||
def do_event_show(sc, args):
|
||||
'''Describe the event.'''
|
||||
try:
|
||||
event = sc.events.get(args.event)
|
||||
query = {'id': args.event}
|
||||
event = sc.get(models.Event, query)
|
||||
except exc.HTTPNotFound as ex:
|
||||
raise exc.CommandError(str(ex))
|
||||
|
||||
@ -605,14 +623,14 @@ def do_event_show(sc, args):
|
||||
help=_('Only return action that appear after the given action ID.'))
|
||||
def do_action_list(sc, args):
|
||||
'''List actions.'''
|
||||
fields = {
|
||||
queries = {
|
||||
'limit': args.limit,
|
||||
'marker': args.marker,
|
||||
'filters': utils.format_parameters(args.filters)
|
||||
}
|
||||
|
||||
try:
|
||||
actions = sc.actions.list(**fields)
|
||||
actions = sc.list(models.Action, queries)
|
||||
except exc.HTTPNotFound as ex:
|
||||
raise exc.CommandError(str(ex))
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user