Exemple #1
0
class Stack(Resource):
    def __init__(self, *args, **kwargs):
        super().__init__(self, *args, **kwargs)
        self.serviceApi = API(url=self.links.get("services"))

    def getServices(self, **kwargs):
        """ Get all services """
        allServices = self.serviceApi.get(**kwargs)
        services = filter(lambda service: service.get("id") in self.serviceIds,
                          allServices)
        services = list(map(lambda service: Service(**service), services))
        return services

    def getService(self, **kwargs):
        """ Get single service """
        services = self.getServices(**kwargs)
        return services[0] if services else None

    def addService(self, serviceParams, timeout=None, rollback=False):
        """ Add a service """
        serviceTemplate = template.create("service")

        # Update the template with provided parameters
        serviceTemplate = utils.updateRecursive(serviceTemplate, serviceParams)

        # Set the project id and stack id
        serviceTemplate["launchConfig"]["accountId"] = self.accountId
        serviceTemplate["stackId"] = self.id

        serviceInfo = self.serviceApi.add(serviceTemplate)
        if serviceInfo:
            service = Service(**serviceInfo)
            if service and timeout:
                srv = service._waitFor(dict(state="active"), timeout=timeout)
                if not srv and rollback:
                    service.remove(timeout)
                    sys.exit(1)

            return service
class Project(Resource):
    def __init__(self, *args, **kwargs):
        super().__init__(self, *args, **kwargs)
        self.stackApi = API(url=self.links.get("stacks"))
        self.serviceApi = API(url=self.links.get("services"))

    def getStacks(self, **kwargs):
        """ Get stacks """
        stacks = self.stackApi.get(**kwargs)
        stacks = list(map(lambda stack: Stack(**stack), stacks))
        return stacks

    def getStack(self, **kwargs):
        """ Get single stack """
        stacks = self.getStacks(**kwargs)
        return stacks[0] if stacks else None

    def getServices(self, **kwargs):
        """ Get all services """
        allServices = self.serviceApi.get(**kwargs)
        services = filter(lambda service: service.get("accountId") == self.id,
                          allServices)
        services = list(map(lambda service: Service(**service), services))
        return services

    def getService(self, **kwargs):
        """ Get single service """
        services = self.getServices(**kwargs)
        return services[0] if services else None

    def addStack(self, **kwargs):
        """ Add stack """
        stackTemplate = template.create("stack")
        stackTemplate.update(kwargs)
        stack = self.stackApi.add(stackTemplate)
        if stack:
            return Stack(**stack)