summaryrefslogtreecommitdiffstats
path: root/dcae-cli/dcae_cli/commands/profiles/commands.py
blob: dfd55172c3bdfbe3502b1096eca339ed88689f3b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# ============LICENSE_START=======================================================
# org.onap.dcae
# ================================================================================
# Copyright (c) 2017 AT&T Intellectual Property. 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.
# ============LICENSE_END=========================================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.

# -*- coding: utf-8 -*-
"""
Provides profiles commands
"""
import json

import click

from dcae_cli.util.exc import DcaeException
from dcae_cli.util.profiles import (get_profiles, activate_profile, get_active_name, update_profile,
                                    delete_profile, create_profile)


@click.group()
def profiles():
    pass


@profiles.command()
@click.argument('name')
def activate(name):
    '''Sets profile NAME as the active profile'''
    activate_profile(name)


@profiles.command(name='list')
def list_profiles():
    '''Lists available profiles'''
    profiles = get_profiles(include_active=False)
    active = get_active_name()
    names = sorted(profiles.keys())
    outputs = ("{} {}".format('  ' if not name == active else '* ', name) for name in names)
    click.echo('\n'.join(outputs))


@profiles.command()
@click.argument('name')
def show(name):
    '''Prints the profile dictionary'''
    profiles = get_profiles()
    try:
        click.echo(json.dumps(profiles[name], sort_keys=True, indent=4))
    except KeyError as e:
        raise DcaeException("Profile '{}' does not exist.".format(e))


@profiles.command()
@click.argument('name', type=click.STRING)
def create(name):
    '''Creates a new profile NAME initialized with defaults'''
    create_profile(name)


@profiles.command(name='set')
@click.argument('name')
@click.argument('key')
@click.argument('value')
def update(name, key, value):
    '''Updates profile NAME such that KEY=VALUE'''
    update_profile(name, **{key: value})


@profiles.command()
@click.argument('name')
def delete(name):
    '''Deletes profile NAME'''
    delete_profile(name)