def do_role_show(cs, args):
    """Show details about a role."""
    role = _find_role(cs, args.zone, args.role)
    keys = ['_links']
    final_dict = utils.remove_values_from_manager_dict(role, keys)
    final_dict = utils.check_json_pretty_value_for_dict(final_dict)
    utils.print_dict(final_dict)
def do_component_show(cs, args):
    """Show details about a component."""
    component = _find_component(cs, args.component)
    keys = ['_links']
    final_dict = utils.remove_values_from_manager_dict(component, keys)
    final_dict = utils.check_json_pretty_value_for_dict(final_dict)
    utils.print_dict(final_dict)
def do_profile_show(cs, args):
    """Show details about a profile by architecture."""
    profile = _find_profile(cs, args.architecture, args.profile)
    keys = ['_links']
    final_dict = utils.remove_values_from_manager_dict(profile, keys)
    final_dict = utils.check_json_pretty_value_for_dict(final_dict)
    utils.print_dict(final_dict)
def do_profile_show(cs, args):
    """Show details about a profile by architecture."""
    profile = _find_profile(cs, args.architecture, args.profile)
    keys = ['_links']
    final_dict = utils.remove_values_from_manager_dict(profile, keys)
    final_dict = utils.check_json_pretty_value_for_dict(final_dict)
    utils.print_dict(final_dict)
def do_component_show(cs, args):
    """Show details about a component."""
    component = _find_component(cs, args.component)
    keys = ['_links']
    final_dict = utils.remove_values_from_manager_dict(component, keys)
    final_dict = utils.check_json_pretty_value_for_dict(final_dict)
    utils.print_dict(final_dict)
def do_role_show(cs, args):
    """Show details about a role."""
    role = _find_role(cs, args.zone, args.role)
    keys = ['_links']
    final_dict = utils.remove_values_from_manager_dict(role, keys)
    final_dict = utils.check_json_pretty_value_for_dict(final_dict)
    utils.print_dict(final_dict)
def do_zone_property_delete(cs, args):
    """Delete a zone property."""
    zone = _find_zone(cs, args.zone)
    property_key = args.property_key
    zone = cs.zones.property_delete(zone, property_key)
    zone = zone['zone']
    del zone['_links'],
    final_dict = utils.check_json_pretty_value_for_dict(zone)
    utils.print_dict(final_dict)
def do_zone_property_delete(cs, args):
    """Delete a zone property."""
    zone = _find_zone(cs, args.zone)
    property_key = args.property_key
    zone = cs.zones.property_delete(zone, property_key)
    zone = zone['zone']
    del zone['_links'],
    final_dict = utils.check_json_pretty_value_for_dict(zone)
    utils.print_dict(final_dict)
def do_profile_property_delete(cs, args):
    """Delete a profile property by architecture."""
    architecture = _find_architecture(cs, args.architecture)
    profile = _find_profile(cs, args.architecture, args.profile)
    property_key = args.property_key
    profile = cs.profiles.property_delete(architecture, profile, property_key)
    profile = profile['profile']
    del profile['_links'],
    final_dict = utils.check_json_pretty_value_for_dict(profile)
    utils.print_dict(final_dict)
def do_profile_property_delete(cs, args):
    """Delete a profile property by architecture."""
    architecture = _find_architecture(cs, args.architecture)
    profile = _find_profile(cs, args.architecture, args.profile)
    property_key = args.property_key
    profile = cs.profiles.property_delete(architecture, profile, property_key)
    profile = profile['profile']
    del profile['_links'],
    final_dict = utils.check_json_pretty_value_for_dict(profile)
    utils.print_dict(final_dict)
def do_profile_update(cs, args):
    """Update a profile by architecture."""
    _validate_extension_file(args.profile_file, 'json')
    architecture = _find_architecture(cs, args.architecture)
    profile = _find_profile(cs, args.architecture, args.profile)
    final_profile_file = _validate_json_format_file(args.profile_file)
    profile = cs.profiles.update(architecture, profile, final_profile_file)
    profile = profile['profile']
    del profile['_links'],
    final_dict = utils.check_json_pretty_value_for_dict(profile)
    utils.print_dict(final_dict)
def do_role_component_show(cs, args):
    """Show details about a component by zone and role."""
    zone = _find_zone(cs, args.zone)
    role = _find_role(cs, args.zone, args.role)
    component = args.component
    component_zone_role = cs.components.get_zone_role(zone, role, component)
    keys = ['_links']
    final_dict = utils.remove_values_from_manager_dict(component_zone_role,
                                                       keys)
    final_dict = utils.check_json_pretty_value_for_dict(final_dict)
    utils.print_dict(final_dict)
def do_role_component_show(cs, args):
    """Show details about a component by zone and role."""
    zone = _find_zone(cs, args.zone)
    role = _find_role(cs, args.zone, args.role)
    component = args.component
    component_zone_role = cs.components.get_zone_role(zone, role, component)
    keys = ['_links']
    final_dict = utils.remove_values_from_manager_dict(component_zone_role,
                                                       keys)
    final_dict = utils.check_json_pretty_value_for_dict(final_dict)
    utils.print_dict(final_dict)
def do_profile_update(cs, args):
    """Update a profile by architecture."""
    _validate_extension_file(args.profile_file, 'json')
    architecture = _find_architecture(cs, args.architecture)
    profile = _find_profile(cs, args.architecture, args.profile)
    final_profile_file = _validate_json_format_file(args.profile_file)
    profile = cs.profiles.update(architecture, profile, final_profile_file)
    profile = profile['profile']
    del profile['_links'],
    final_dict = utils.check_json_pretty_value_for_dict(profile)
    utils.print_dict(final_dict)
def do_role_component_update(cs, args):
    """Update a component by zone and role ."""
    _validate_extension_file(args.component_file, 'json')
    zone = _find_zone(cs, args.zone)
    role = _find_role(cs, args.zone, args.role)
    component = args.component
    file = _validate_json_format_file(args.component_file)
    component = cs.components.update_zone_role(zone, role, component, file)
    component = component['component']
    del component['_links'],
    final_dict = utils.check_json_pretty_value_for_dict(component)
    utils.print_dict(final_dict)
def do_datastore_validate(cs, args):
    """Validate a discovered NFS endpoint or just a GLUSTER endpoint."""
    options = {
        'endpoint': args.endpoint,
        'store': args.datastore,
        'identifier': args.identifier,
        'storage_type': args.storage_type
    }
    datastore = cs.datastores.validate(**options)
    dict = datastore[1]['datastore']
    final_dict = utils.check_json_pretty_value_for_dict(dict)
    utils.print_dict(final_dict)
def do_role_component_update(cs, args):
    """Update a component by zone and role ."""
    _validate_extension_file(args.component_file, 'json')
    zone = _find_zone(cs, args.zone)
    role = _find_role(cs, args.zone, args.role)
    component = args.component
    file = _validate_json_format_file(args.component_file)
    component = cs.components.update_zone_role(zone, role, component, file)
    component = component['component']
    del component['_links'],
    final_dict = utils.check_json_pretty_value_for_dict(component)
    utils.print_dict(final_dict)
def do_datastore_validate(cs, args):
    """Validate a discovered NFS endpoint or just a GLUSTER endpoint."""
    options = {
        'endpoint': args.endpoint,
        'store': args.datastore,
        'identifier': args.identifier,
        'storage_type': args.storage_type
    }
    datastore = cs.datastores.validate(**options)
    dict = datastore[1]['datastore']
    final_dict = utils.check_json_pretty_value_for_dict(dict)
    utils.print_dict(final_dict)
def do_profile_create(cs, args):
    """Add a new profile by architecture."""
    _validate_extension_file(args.profile, 'json')
    architecture = _find_architecture(cs, args.architecture)
    data = _validate_json_format_file(args.profile)
    data['profile']['name'] = args.name

    profile = cs.profiles.create(architecture, data)

    keys = ['_links']
    final_dict = utils.remove_values_from_manager_dict(profile, keys)
    final_dict = utils.check_json_pretty_value_for_dict(final_dict)
    utils.print_dict(final_dict)
def do_profile_create(cs, args):
    """Add a new profile by architecture."""
    _validate_extension_file(args.profile, 'json')
    architecture = _find_architecture(cs, args.architecture)
    data = _validate_json_format_file(args.profile)
    data['profile']['name'] = args.name

    profile = cs.profiles.create(architecture, data)

    keys = ['_links']
    final_dict = utils.remove_values_from_manager_dict(profile, keys)
    final_dict = utils.check_json_pretty_value_for_dict(final_dict)
    utils.print_dict(final_dict)
def do_architecture_create(cs, args):
    """Add a new architecture.
    :param cs:
    :param args:
    """
    _validate_extension_file(args.architecture, 'arc')

    with open(args.architecture) as f:
        architecture = cs.architectures.create(json.load(f))

    keys = ['_links']
    final_dict = utils.remove_values_from_manager_dict(architecture, keys)
    final_dict = utils.check_json_pretty_value_for_dict(final_dict)
    utils.print_dict(final_dict)
def do_architecture_create(cs, args):
    """Add a new architecture.
    :param cs:
    :param args:
    """
    _validate_extension_file(args.architecture, 'arc')

    with open(args.architecture) as f:
        architecture = cs.architectures.create(json.load(f))

    keys = ['_links']
    final_dict = utils.remove_values_from_manager_dict(architecture, keys)
    final_dict = utils.check_json_pretty_value_for_dict(final_dict)
    utils.print_dict(final_dict)
def do_zone_create(cs, args):
    """Add a new zone by architecture according to a JSON profile."""
    _validate_extension_file(args.zone, 'json')
    architecture = _find_architecture(cs, args.architecture)
    file = _validate_json_format_file(args.zone)
    base_profile = file['profile']
    for key, value in base_profile.items():
        if key == 'name':
            base_profile.update({key: args.name})
    zone = {'zone': ''}
    zone.update({'zone': base_profile})
    zone = cs.zones.create(architecture, zone)
    keys = ['_links']
    final_dict = utils.remove_values_from_manager_dict(zone, keys)
    final_dict = utils.check_json_pretty_value_for_dict(final_dict)
    utils.print_dict(final_dict)
def do_zone_create(cs, args):
    """Add a new zone by architecture according to a JSON profile."""
    _validate_extension_file(args.zone, 'json')
    architecture = _find_architecture(cs, args.architecture)
    file = _validate_json_format_file(args.zone)
    base_profile = file['profile']
    for key, value in base_profile.items():
        if key == 'name':
            base_profile.update({key: args.name})
    zone = {'zone': ''}
    zone.update({'zone': base_profile})
    zone = cs.zones.create(architecture, zone)
    keys = ['_links']
    final_dict = utils.remove_values_from_manager_dict(zone, keys)
    final_dict = utils.check_json_pretty_value_for_dict(final_dict)
    utils.print_dict(final_dict)
def do_datastore_add(cs, args):
    """Validate and add to the pool a NFS endpoint or GLUSTER endpoint."""
    if args.parameters is None:
        parameters = ''
    else:
        parameters = ''.join(args.parameters)
        parameters = parameters.replace(',', ' ')

    options = {
        'endpoint': args.endpoint,
        'store': args.datastore,
        'identifier': args.identifier,
        'storage_type': args.storage_type,
        'persist': True,
        'parameters': parameters
    }
    datastore = cs.datastores.prepare(**options)
    dict = datastore[1]['datastore']
    final_dict = utils.check_json_pretty_value_for_dict(dict)
    utils.print_dict(final_dict)
def do_datastore_add(cs, args):
    """Validate and add to the pool a NFS endpoint or GLUSTER endpoint."""
    if args.parameters is None:
        parameters = ''
    else:
        parameters = ''.join(args.parameters)
        parameters = parameters.replace(',', ' ')

    options = {
        'endpoint': args.endpoint,
        'store': args.datastore,
        'identifier': args.identifier,
        'storage_type': args.storage_type,
        'persist': True,
        'parameters': parameters
    }
    datastore = cs.datastores.prepare(**options)
    dict = datastore[1]['datastore']
    final_dict = utils.check_json_pretty_value_for_dict(dict)
    utils.print_dict(final_dict)