示例#1
0
    def get(self, pod_name=None):
        """
        Get all pods or a single pod
        :param pod_id:
        """
        get_request = dict()

        if pod_name is not None:
            get_request["name"] = pod_name

        res = []
        cursor = self.db.pod.find(get_request)
        while (yield cursor.fetch_next):
            pod = Pod.pod_from_dict(cursor.next_object())
            res.append(pod.format())

        meta = dict()
        meta["total"] = len(res)
        meta["success"] = True if len(res) > 0 else False

        answer = dict()
        answer["pods"] = res
        answer["meta"] = meta

        self.finish_request(answer)
示例#2
0
    def post(self):
        """ Create a POD"""

        if self.json_args is None:
            raise HTTPError(HTTP_BAD_REQUEST)

        query = {"name": self.json_args.get("name")}

        # check for existing name in db
        mongo_dict = yield self.db.pod.find_one(query)
        if mongo_dict is not None:
            raise HTTPError(HTTP_FORBIDDEN, "{} already exists as a pod".format(self.json_args.get("name")))

        pod = Pod.pod_from_dict(self.json_args)
        pod.creation_date = datetime.now()

        future = self.db.pod.insert(pod.format())
        result = yield future
        pod._id = result

        meta = dict()
        meta["success"] = True
        meta["uri"] = "/pods/{}".format(pod.name)

        answer = dict()
        answer["pod"] = pod.format_http()
        answer["meta"] = meta

        self.finish_request(answer)
示例#3
0
def get_pods(product_type: str = None,
             coffee_flavor: str = None,
             pack_size: str = None):
    pods = [
        Pod(sku=pod["sku"],
            product_type=pod["product_type"],
            coffee_flavor=pod["coffee_flavor"],
            pack_size=pod["pack_size"]) for pod in data.products["pods"]
        if (product_type is None or pod["product_type"] == product_type) and
        (coffee_flavor is None or pod["coffee_flavor"] == coffee_flavor) and (
            pack_size is None or pod["pack_size"] == pack_size)
    ]
    return pods
    def detect_nodes_and_pods(self):
        nodes_data = apiserver.get_nodes()
        pods_data = apiserver.get_pods()

        nodes = [Node(x) for x in nodes_data]
        pods = [Pod(x) for x in pods_data]

        nodes_map = {x.ip: x for x in nodes}

        for p in pods:

            if not p.isReady:
                print("Pod is not ready, skipping")
                continue

            if not p.hostIP in nodes_map:
                print("Pod is attached to an unknown host, skipping:",
                      p.hostIP)
                continue

            nodes_map[p.hostIP].add(p)

        return [x for x in nodes if x.pods]