# Path: mistralclient/api/base.py
# class Resource(object):
# class ResourceManager(object):
# class APIException(Exception):
#     def __init__(self, manager, data):
#     def _set_defaults(self):
#     def _set_attributes(self):
#     def to_dict(self):
#     def __str__(self):
# def _check_items(obj, searches):
# def extract_json(response, response_key):
#     def __init__(self, http_client, enforce_raw_definitions=False):
#     def get_contents_if_file(self, contents_or_file_name):
#     def find(self, **kwargs):
#     def list(self):
#     def _build_query_params(marker=None, limit=None, sort_keys=None,
#                             sort_dirs=None, fields=None, filters=None,
#                             scope=None, namespace=None):
#     def _ensure_not_empty(self, **kwargs):
#     def _validate(self, url, data, response_key=None, dump_json=True,
#                   headers=None, is_iter_resp=False):
#     def _create(self, url, data, response_key=None, dump_json=True,
#                 headers=None, is_iter_resp=False, resp_status_ok=201,
#                 as_class=True):
#     def _update(self, url, data, response_key=None, dump_json=True,
#                 headers=None, is_iter_resp=False):
#     def _list(self, url, response_key=None, headers=None,
#               returned_res_cls=None):
#     def _get(self, url, response_key=None, headers=None):
#     def _delete(self, url, headers=None):
#     def _raise_api_exception(resp):
# def get_json(response):
#     def __init__(self, error_code=None, error_message=None):
# 
# Path: mistralclient/utils.py
# def do_action_on_many(action, resources, success_msg, error_msg):
# def load_content(content):
# def load_file(path):
# def get_contents_if_file(contents_or_file_name):
# def load_json(input_string):


from oslo_serialization import jsonutils
from mistralclient.api import base
from mistralclient import utils
#    limitations under the License.





class Environment(base.Resource):
    resource_name = 'Environment'

    def _set_attributes(self):
        """Override loading of the "variables" attribute from text to dict."""
        for k, v in self._data.items():
            if k == 'variables' and isinstance(v, str):
                v = jsonutils.loads(v)

            try:
                setattr(self, k, v)
            except AttributeError:
                # In this case we already defined the attribute on the class
                pass


class EnvironmentManager(base.ResourceManager):
    resource_class = Environment

    def create(self, **kwargs):
        # Check to see if the file name or URI is being passed in. If so,
        # read it's contents first.
        if 'file' in kwargs:
            file = kwargs['file']

# Path: mistralclient/api/base.py
# class Resource(object):
# class ResourceManager(object):
# class APIException(Exception):
#     def __init__(self, manager, data):
#     def _set_defaults(self):
#     def _set_attributes(self):
#     def to_dict(self):
#     def __str__(self):
# def _check_items(obj, searches):
# def extract_json(response, response_key):
#     def __init__(self, http_client, enforce_raw_definitions=False):
#     def get_contents_if_file(self, contents_or_file_name):
#     def find(self, **kwargs):
#     def list(self):
#     def _build_query_params(marker=None, limit=None, sort_keys=None,
#                             sort_dirs=None, fields=None, filters=None,
#                             scope=None, namespace=None):
#     def _ensure_not_empty(self, **kwargs):
#     def _validate(self, url, data, response_key=None, dump_json=True,
#                   headers=None, is_iter_resp=False):
#     def _create(self, url, data, response_key=None, dump_json=True,
#                 headers=None, is_iter_resp=False, resp_status_ok=201,
#                 as_class=True):
#     def _update(self, url, data, response_key=None, dump_json=True,
#                 headers=None, is_iter_resp=False):
#     def _list(self, url, response_key=None, headers=None,
#               returned_res_cls=None):
#     def _get(self, url, response_key=None, headers=None):
#     def _delete(self, url, headers=None):
#     def _raise_api_exception(resp):
# def get_json(response):
#     def __init__(self, error_code=None, error_message=None):
# 
# Path: mistralclient/utils.py
# def do_action_on_many(action, resources, success_msg, error_msg):
# def load_content(content):
# def load_file(path):
# def get_contents_if_file(contents_or_file_name):
# def load_json(input_string):


# Path: mistralclient/api/v2/environments.py
from oslo_serialization import jsonutils
from mistralclient.api import base
from mistralclient import utils

#    limitations under the License.





class Environment(base.Resource):
    resource_name = 'Environment'

    def _set_attributes(self):
        """Override loading of the "variables" attribute from text to dict."""
        for k, v in self._data.items():
            if k == 'variables' and isinstance(v, str):
                v = jsonutils.loads(v)

            try:
                setattr(self, k, v)
            except AttributeError:
                # In this case we already defined the attribute on the class
                pass


class EnvironmentManager(base.ResourceManager):
    resource_class = Environment

    def create(self, **kwargs):
        # Check to see if the file name or URI is being passed in. If so,
        # read it's contents first.
        if 'file' in kwargs:
            file = kwargs['file']

            kwargs = utils.load_content(self.get_contents_if_file(file))