Esempio n. 1
0
    def manage_provision(self, peer, urns, creds, beffort, etime, gusers):
        try:
            adaptor, uri = AdaptorFactory.create_from_db(peer)
            logger.debug("Adaptor=%s, uri=%s" % (adaptor, uri))
            m, urn = adaptor.provision(urns, creds[0]["geni_value"], beffort,
                                       etime, gusers)

            manifest = TNRMv3ManifestParser(from_string=m)
            logger.debug("TNRMv3ManifestParser=%s" % (manifest, ))
            self.validate_rspec(manifest.get_rspec())

            nodes = manifest.nodes()
            logger.info("Nodes(%d)=%s" % (
                len(nodes),
                nodes,
            ))
            links = manifest.links()
            logger.info("Links(%d)=%s" % (
                len(links),
                links,
            ))

            return ({"nodes": nodes, "links": links}, urn)
        except Exception as e:
            # It is possible that TNRM does not implement this method!
            if beffort:
                logger.error("manage_provision exception: %s", e)
                return ({"nodes": [], "links": []}, [])
            else:
                logger.critical("manage_provision exception: %s", e)
                raise e
Esempio n. 2
0
    def manage_describe(self, peer, urns, creds):
        try:
            adaptor, uri = AdaptorFactory.create_from_db(peer)
            logger.debug("Adaptor=%s, uri=%s" % (adaptor, uri))
            m, urn, ss = adaptor.describe(urns, creds[0]["geni_value"])

            manifest = TNRMv3ManifestParser(from_string=m)
            logger.debug("TNRMv3ManifestParser=%s" % (manifest, ))
            self.validate_rspec(manifest.get_rspec())

            nodes = manifest.nodes()
            logger.info("Nodes(%d)=%s" % (
                len(nodes),
                nodes,
            ))
            links = manifest.links()
            logger.info("Links(%d)=%s" % (
                len(links),
                links,
            ))

            return ({"nodes": nodes, "links": links}, urn, ss)
        except Exception as e:
            logger.critical("manage_describe exception: %s", e)
            raise e
Esempio n. 3
0
def main(argv=None):
    if not argv:
        argv = sys.argv

    print 'Start the test environment'
    print '=== TNRMv3AdvertisementParser ==='
    rspec = TNRMv3AdvertisementParser("adv_rspec_example.xml")
    in_validate(rspec.get_rspec())

    print '=== TNRMv3RequestParser ==='
    rspec = TNRMv3RequestParser("request_rspec_example.xml")
    in_validate(rspec.get_rspec())

    print '=== TNRMv3RequestParser (1) ==='
    rspec = TNRMv3RequestParser("request_rspec_example_1.xml")
    in_validate(rspec.get_rspec())

    print '=== TNRMv3ManifestParser ==='
    rspec = TNRMv3ManifestParser("manifest_rspec_example.xml")
    in_validate(rspec.get_rspec())

    nodes = rspec.nodes()
    print "Nodes=%s" % nodes

    print 'Bye Bye...'
    return True
Esempio n. 4
0
    def manage_allocate(self, surn, creds, end, nodes_in, links_in):
        route = {}
        nodes = self.__update_node_route(route, nodes_in)
        logger.debug("Nodes(%d)=%s" % (
            len(nodes),
            nodes,
        ))
        links = self.__update_link_route(route, links_in)
        logger.debug("Links(%d)=%s" % (
            len(links),
            links,
        ))

        if self.__workaround_split_allocation:
            # This is a (very)ugly workaround that we MUST remove ASAP!!!
            return self.__manage_allocate_split_workaround(
                surn, creds, end, nodes, links)

        self.__update_route_rspec(route, nodes, links)
        logger.info("Route=%s" % (route, ))

        manifests, slivers, db_slivers, se_tn_info = [], [], [], []

        for k, v in route.iteritems():
            try:
                (m, ss) =\
                    self.send_request_allocate_rspec(k, v, surn, creds, end)
                manifest = TNRMv3ManifestParser(from_string=m)
                logger.debug("TNRMv3ManifestParser=%s" % (manifest, ))
                self.validate_rspec(manifest.get_rspec())

                nodes = manifest.nodes()
                logger.info("Nodes(%d)=%s" % (
                    len(nodes),
                    nodes,
                ))
                links = manifest.links()
                logger.info("Links(%d)=%s" % (
                    len(links),
                    links,
                ))

                manifests.append({"nodes": nodes, "links": links})

                self.extend_slivers(ss, k, slivers, db_slivers)

                se_tn = self.__extract_se_from_tn(nodes, links)
                logger.debug("SE-TN-INFO=%s" % (se_tn, ))
                if len(se_tn) > 0:
                    se_tn_info.extend(se_tn)
            except Exception as e:
                logger.critical("manage_allocate exception: %s", e)
                raise delegate_ex.AllocationError(str(e), surn, slivers,
                                                  db_slivers)

        return (manifests, slivers, db_slivers, se_tn_info)
Esempio n. 5
0
    def __manage_allocate_split_workaround(self, surn, creds, end, ns, ls):
        manifests, slivers, db_slivers, se_tn_info = [], [], [], []
        route = [(n.get("routing_key"), TNRMv3RequestFormatter()) for n in ns]
        for i in xrange(0, len(ns)):
            route[i][1].node(ns[i])
            route[i][1].link(ls[i])

        logger.info("(SPLIT_WORKAROUND)Route: %s" % (route, ))

        for r in route:
            try:
                (m, ss) = self.send_request_allocate_rspec(
                    r[0], r[1], surn, creds, end)
                manifest = TNRMv3ManifestParser(from_string=m)
                logger.debug("(SPLIT_WORKAROUND)TNRMv3ManifestParser=%s" %
                             (manifest, ))
                self.validate_rspec(manifest.get_rspec())

                nodes = manifest.nodes()
                logger.info("(SPLIT_WORKAROUND)Nodes(%d)=%s" % (
                    len(nodes),
                    nodes,
                ))
                links = manifest.links()
                logger.info("(SPLIT_WORKAROUND)Links(%d)=%s" % (
                    len(links),
                    links,
                ))

                manifests.append({"nodes": nodes, "links": links})

                self.extend_slivers(ss, r[0], slivers, db_slivers)

                se_tn = self.__extract_se_from_tn(nodes, links)
                logger.debug("(SPLIT_WORKAROUND)SE-TN-INFO=%s" % (se_tn, ))
                if len(se_tn) > 0:
                    se_tn_info.extend(se_tn)
            except Exception as e:
                logger.critical("(SPLIT_WORKAROUND)exception: %s", e)
                raise e
        return (manifests, slivers, db_slivers, se_tn_info)
Esempio n. 6
0
 def __init__(self, from_file=None, from_string=None):
     super(ROManifestParser, self).__init__(from_file, from_string)
     self.__com_parser = CRMv3ManifestParser(from_file, from_string)
     self.__of_parser = OFv3ManifestParser(from_file, from_string)
     self.__se_parser = SERMv3ManifestParser(from_file, from_string)
     self.__tn_parser = TNRMv3ManifestParser(from_file, from_string)