Ejemplo n.º 1
0
def load_stack_file(name, stackfile, stack=None):
    if not stack:
        stack = dockercloud.Stack.create()
    else:
        name = stack.name

    stackfile = get_stackfile_name(stackfile)

    with open(stackfile, 'r') as f:
        content = yaml.load(f.read())
        try:
            interpolated_content = interpolate_environment_variables(content, 'service')
        except:
            raise BadParameter("Bad format of the stack file: %s" % stackfile)

        services = []
        if interpolated_content:
            for k, v in interpolated_content.items():
                v.update({"name": k})
                services.append(v)

            if not name:
                name = os.path.basename(os.getcwd())

            services = inject_env_var(services)
            data = {'name': name, 'services': services}
            for k, v in list(data.items()):
                setattr(stack, k, v)
        else:
            raise BadParameter("Bad format of the stack file: %s" % stackfile)

    return stack
Ejemplo n.º 2
0
def get_services_from_stackfiles(name, stackfiles):
    services_dict = {}
    for stackfile in stackfiles:
        with open(stackfile, "r") as f:
            content = yaml.load(f.read())
            try:
                interpolated_content = interpolate_environment_variables(content, "service")
            except Exception as e:
                raise BadParameter("Bad format of the stack file(%s): %s" % (stackfile, e))

            if interpolated_content:
                for k, v in interpolated_content.items():
                    v.update({"name": k})
                    services_dict[k] = v
            else:
                raise BadParameter("Bad format of the stack file: %s" % stackfile)
    services = inject_env_var(services_dict.values())
    data = {"name": name, "services": services}
    return data
Ejemplo n.º 3
0
def load_stack_file(name, stackfile, stack=None):
    if not stack:
        stack = dockercloud.Stack.create()
    else:
        name = stack.name

    if not stackfile:
        filematch = 0
        if os.path.exists("tutum.yml"):
            stackfile = "tutum.yml"
            filematch += 1
        if os.path.exists("docker-compose.yml"):
            stackfile = "docker-compose.yml"
            filematch += 1
        if filematch == 0:
            raise BadParameter("Cannot find stack file. Are you in the right directory?")
        elif filematch > 1:
            raise BadParameter("More than one stack file was found in the path. "
                               "Please specify which one you'd like to use with -f <filename>")
    with open(stackfile, 'r') as f:
        content = yaml.load(f.read())
        interpolated_content = interpolate_environment_variables(content, 'service')

        services = []
        if interpolated_content:
            for k, v in interpolated_content.items():
                print ()
                v.update({"name": k})
                services.append(v)

            if not name:
                name = os.path.basename(os.getcwd())

            services = inject_env_var(services)
            data = {'name': name, 'services': services}
            for k, v in list(data.items()):
                setattr(stack, k, v)
        else:
            raise BadParameter("Bad format of the stack file: %s" % stackfile)

    return stack
Ejemplo n.º 4
0
def get_services_from_stackfiles(name, stackfiles):
    services_dict = {}
    for stackfile in stackfiles:
        with open(stackfile, 'r') as f:
            content = yaml.load(f.read())
            try:
                interpolated_content = interpolate_environment_variables(
                    content, 'service')
            except Exception as e:
                raise BadParameter("Bad format of the stack file(%s): %s" %
                                   (stackfile, e))

            if interpolated_content:
                for k, v in interpolated_content.items():
                    v.update({"name": k})
                    services_dict[k] = v
            else:
                raise BadParameter("Bad format of the stack file: %s" %
                                   stackfile)
    services = inject_env_var(services_dict.values())
    data = {'name': name, 'services': services}
    return data