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)
Exemple #2
0
class Cluster(Resource):
    def __init__(self, *args, **kwargs):
        super().__init__(self, *args, **kwargs)
        self.projectApi = API(url="{}/{}".format(self.selfUrl, "projects"))
        self.stackApi = API(url=self.links["stacks"])
        self.serviceApi = API(url=self.links["services"])

    def getProjects(self, **kwargs):
        """ Get projects """
        projects = self.projectApi.get(**kwargs)
        projects = list(map(lambda proj: Project(**proj), projects))
        return projects

    def getProject(self, **kwargs):
        """ Get single project """
        projects = self.getProjects(**kwargs)
        return projects[0] if projects else None
Exemple #3
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
 def services(self, **params):
     resourceApi = API("{}/{}/{}".format(self.rancherUrl, self.apiVersion, "services"), auth=self._auth)
     res = resourceApi.get(**params)
     return list(map(lambda r: Service(**r), res))
 def projects(self, **params):
     resourceApi = API("{}/{}/{}".format(self.rancherUrl, self.apiVersion, "projects"), auth=self._auth)
     res = resourceApi.get(**params)
     return list(map(lambda r: Project(**r), res))