Skip to content
Snippets Groups Projects
  • Eduardo Sousa's avatar
    Adding an charm generator · 10b27efc
    Eduardo Sousa authored
    
    Current version only supports Ansible.
    
    It takes as input an empty charm with playbooks and generates
    the following files:
    - metadata.yaml
    - layers.yaml
    - reactive/<ansible_charm>.py
    - actions.yaml
    - actions/<action-name>
    
    After that, it is only required to build the charm.
    
    NOTE: In this version, it doesn't support parameters yet.
    
    Change-Id: Ia771185a38421a04c1adcef4ded3d7a55fa164ee
    Signed-off-by: default avatarEduardo Sousa <esousa@whitestack.com>
    10b27efc
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
action.j2 1.89 KiB
#!/usr/bin/env python3
{#-
# Copyright 2019 Whitestack, LLC
#
# 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.
#
# For those usages not covered by the Apache License, Version 2.0 please
# contact: esousa@whitestack.com or glavado@whitestack.com
-#}
{%- if license is defined %}
# Copyright {{ license.year }} {{ license.company }}
#
# 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.
#
# For those usages not covered by the Apache License, Version 2.0 please
# contact: {{ license.email }}
{%- endif %}

import sys
sys.path.append('lib')

from charms.reactive import main
from charms.reactive import set_state
from charmhelpers.core.hookenv import action_fail, action_name

"""
`set_state` only works here because it's flushed to disk inside the `main()`
loop. remove_state will need to be called inside the action method.
"""
set_state('actions.{}'.format(action_name()))

try:
    main()
except Exception as e:
    action_fail(repr(e))