Example #1
0
    def test_get_security_group(self, m_t, m_rq):
        tenant_id = fakes_nova.tenants["baz"]["id"]
        m_t.return_value = tenant_id
        sc_group = fakes_nova.security_groups[tenant_id][0]
        id = sc_group['id']
        m_t.return_value = tenant_id
        resp = fakes_network.create_fake_json_resp(
            {"security_group": sc_group}, 200)
        req_mock = mock.MagicMock()
        req_mock.get_response.return_value = resp
        m_rq.return_value = req_mock
        ret = self.helper.get_security_group_details(None, id)
        self.assertEqual(sc_group['id'], ret["id"])
        self.assertEqual(sc_group['description'], ret["summary"])
        occi_os_group = os_helpers.build_security_group_from_nova(
            fakes_nova.security_groups[tenant_id])[0]
        cont = 0
        for r in ret["rules"]:
            self.assertEqual(occi_os_group['rules'][cont]['protocol'],
                             r["protocol"])
            self.assertEqual(occi_os_group['rules'][cont]['range'], r["range"])
            self.assertEqual(occi_os_group['rules'][cont]['port'], r["port"])
            self.assertEqual(occi_os_group['rules'][cont]['type'], r["type"])
            cont += 1

        m_rq.assert_called_with(
            None,
            method="GET",
            path="/%s/os-security-groups/%s" % (tenant_id, id),
        )
Example #2
0
 def test_create_security_group(self, m_t, m_rq):
     tenant_id = fakes_nova.tenants["baz"]["id"]
     m_t.return_value = tenant_id
     sc_group = fakes_nova.security_groups[tenant_id][0]
     occi_os_group = os_helpers.build_security_group_from_nova(
         fakes_nova.security_groups[tenant_id])[0]
     resp = fakes_network.create_fake_json_resp(
         {"security_group": sc_group}, 200)
     req_mock = mock.MagicMock()
     req_mock.get_response.return_value = resp
     resp_rule1 = fakes_network.create_fake_json_resp(
         {"security_group_rule": sc_group['rules'][0]}, 200)
     req_mock_rule1 = mock.MagicMock()
     req_mock_rule1.get_response.return_value = resp_rule1
     resp_rule2 = fakes_network.create_fake_json_resp(
         {"security_group_rule": sc_group['rules'][1]}, 200)
     req_mock_rule2 = mock.MagicMock()
     req_mock_rule2.get_response.return_value = resp_rule2
     m_rq.side_effect = [req_mock, req_mock_rule1, req_mock_rule2]
     ret = self.helper.create_security_group(
         None,
         name=occi_os_group['title'],
         description=occi_os_group['summary'],
         rules=occi_os_group['rules'])
     cont = 0
     for r in ret["rules"]:
         self.assertEqual(occi_os_group['rules'][cont]['protocol'],
                          r["protocol"])
         self.assertEqual(occi_os_group['rules'][cont]['range'], r["range"])
         self.assertEqual(occi_os_group['rules'][cont]['port'], r["port"])
         self.assertEqual(occi_os_group['rules'][cont]['type'], r["type"])
         cont += 1
Example #3
0
    def test_get_security_group(self, m_t, m_rq):
        tenant_id = fakes_nova.tenants["baz"]["id"]
        m_t.return_value = tenant_id
        sc_group = fakes_nova.security_groups[tenant_id][0]
        id = sc_group['id']
        m_t.return_value = tenant_id
        resp = fakes_network.create_fake_json_resp(
            {"security_group": sc_group}, 200
        )
        req_mock = mock.MagicMock()
        req_mock.get_response.return_value = resp
        m_rq.return_value = req_mock
        ret = self.helper.get_security_group_details(None, id)
        self.assertEqual(sc_group['id'], ret["id"])
        self.assertEqual(sc_group['description'], ret["summary"])
        occi_os_group = os_helpers.build_security_group_from_nova(
            fakes_nova.security_groups[tenant_id]
        )[0]
        cont = 0
        for r in ret["rules"]:
            self.assertEqual(
                occi_os_group['rules'][cont]['protocol'], r["protocol"])
            self.assertEqual(
                occi_os_group['rules'][cont]['range'], r["range"])
            self.assertEqual(
                occi_os_group['rules'][cont]['port'], r["port"])
            self.assertEqual(
                occi_os_group['rules'][cont]['type'], r["type"])
            cont += 1

        m_rq.assert_called_with(
            None, method="GET",
            path="/%s/os-security-groups/%s" % (tenant_id, id),
        )
Example #4
0
    def get_security_group_details(self, req, sec_id):
        """Get details about a security group.

        :param req: the incoming request
        :param sec_id: security group id to show
        """
        net = self._get_security_group(req, sec_id)
        ooi_sec = os_helpers.build_security_group_from_nova([net])
        return ooi_sec[0]
Example #5
0
    def get_security_group_details(self, req, sec_id):
        """Get details about a security group.

        :param req: the incoming request
        :param sec_id: security group id to show
        """
        net = self._get_security_group(req, sec_id)
        ooi_sec = os_helpers.build_security_group_from_nova([net])
        return ooi_sec[0]
Example #6
0
    def create_security_group(self, req, name, description, rules):
        """Create security group

        :param req: the incoming request
        :param name: security group name
        :param description: security group description
        :param rules: security group rules
        """
        try:
            tenant_id = self.tenant_from_req(req)
            path = "os-security-groups"
            path = "/%s/%s" % (tenant_id, path)
            param_group = {
                "description": description,
                "name": name,
            }
            body = utils.make_body('security_group', param_group)
            os_req = self._get_req(req,
                                   path=path,
                                   content_type="application/json",
                                   body=json.dumps(body),
                                   method="POST")
            response_group = os_req.get_response(self.app)
            secgroup = self.get_from_response(
                response_group, "security_group", {})
            sec_id = secgroup["id"]
            secgroup["rules"] = []
            for rule in rules:
                port_min, port_max = os_helpers.security_group_rule_port(
                    rule["port"]
                )
                param_rules = {
                    "parent_group_id": sec_id,
                    "ip_protocol": rule["protocol"],
                    "from_port": port_min,
                    "to_port": port_max,
                    "cidr": rule.get("range", "0.0.0.0/0")
                }
                body_rules = utils.make_body('security_group_rule',
                                             param_rules)
                path = "/%s/os-security-group-rules" % (tenant_id)
                os_req_rules = self._get_req(req,
                                             path=path,
                                             content_type="application/json",
                                             body=json.dumps(body_rules),
                                             method="POST")
                response_rules = os_req_rules.get_response(self.app)
                secrules = self.get_from_response(
                    response_rules, "security_group_rule", {})
                secgroup["rules"].append(secrules)
            ooi_sec = os_helpers.build_security_group_from_nova(
                [secgroup]
            )
            return ooi_sec[0]
        except Exception as ex:
            raise ex
Example #7
0
 def test_get_server_security_link(self, mock_get):
     tenant_id = fakes_nova.tenants["baz"]["id"]
     server_id = uuid.uuid4().hex
     sg = fakes_nova.security_groups[tenant_id]
     segroup = os_helpers.build_security_group_from_nova(sg)[0]
     mock_get.return_value = [segroup]
     ret = self.helper.get_server_security_link(None, server_id,
                                                segroup["id"])
     self.assertEqual(server_id, ret[0]['compute_id'])
     self.assertEqual(segroup["title"], ret[0]['securitygroup']["title"])
Example #8
0
 def test_index(self, mock_list):
     tenant_id = fakes_nova.tenants['bar']["id"]
     servers = fakes_nova.servers[tenant_id]
     sg = fakes_nova.security_groups[tenant_id]
     segroup = os_helpers.build_security_group_from_nova(sg)[0]
     links = []
     for server in servers:
         link = {"compute_id": server["id"], "securitygroup": segroup}
         links.append(link)
     mock_list.return_value = links
     ret = self.controller.index(None)
     self.assertIsInstance(ret, collection.Collection)
Example #9
0
 def test_get_server_security_link(self, mock_get):
     tenant_id = fakes_nova.tenants["baz"]["id"]
     server_id = uuid.uuid4().hex
     sg = fakes_nova.security_groups[tenant_id]
     segroup = os_helpers.build_security_group_from_nova(sg)[0]
     mock_get.return_value = [segroup]
     ret = self.helper.get_server_security_link(None, server_id,
                                                segroup["id"])
     self.assertEqual(server_id,
                      ret[0]['compute_id'])
     self.assertEqual(segroup["title"],
                      ret[0]['securitygroup']["title"])
Example #10
0
    def create_security_group(self, req, name, description, rules):
        """Create security group

        :param req: the incoming request
        :param name: security group name
        :param description: security group description
        :param rules: security group rules
        """
        try:
            tenant_id = self.tenant_from_req(req)
            path = "os-security-groups"
            path = "/%s/%s" % (tenant_id, path)
            param_group = {
                "description": description,
                "name": name,
            }
            body = utils.make_body('security_group', param_group)
            os_req = self._get_req(req,
                                   path=path,
                                   content_type="application/json",
                                   body=json.dumps(body),
                                   method="POST")
            response_group = os_req.get_response(self.app)
            secgroup = self.get_from_response(response_group, "security_group",
                                              {})
            sec_id = secgroup["id"]
            secgroup["rules"] = []
            for rule in rules:
                port_min, port_max = os_helpers.security_group_rule_port(
                    rule["port"])
                param_rules = {
                    "parent_group_id": sec_id,
                    "ip_protocol": rule["protocol"],
                    "from_port": port_min,
                    "to_port": port_max,
                    "cidr": rule.get("range", "0.0.0.0/0")
                }
                body_rules = utils.make_body('security_group_rule',
                                             param_rules)
                path = "/%s/os-security-group-rules" % (tenant_id)
                os_req_rules = self._get_req(req,
                                             path=path,
                                             content_type="application/json",
                                             body=json.dumps(body_rules),
                                             method="POST")
                response_rules = os_req_rules.get_response(self.app)
                secrules = self.get_from_response(response_rules,
                                                  "security_group_rule", {})
                secgroup["rules"].append(secrules)
            ooi_sec = os_helpers.build_security_group_from_nova([secgroup])
            return ooi_sec[0]
        except Exception as ex:
            raise ex
Example #11
0
    def list_security_groups(self, req):
        """List security groups

        :param req: the incoming request
        """
        path = "os-security-groups"
        tenant_id = self.tenant_from_req(req)
        path = "/%s/%s" % (tenant_id, path)
        os_req = self._get_req(req, path=path, method="GET")
        response = os_req.get_response(self.app)
        sec = self.get_from_response(response, "security_groups", [])
        ooi_sec = os_helpers.build_security_group_from_nova(sec)
        return ooi_sec
Example #12
0
    def test_show(self, mock_list, mock_get):
        tenant_id = fakes_nova.tenants['baz']["id"]
        server = fakes_nova.servers[tenant_id][0]
        server_id = server['id']
        secgroup_name = server['security_groups'][0]["name"]
        link_id = '%s_%s' % (server_id, secgroup_name)
        sec_group = os_helpers.build_security_group_from_nova(
            fakes_nova.security_groups[tenant_id])
        link = {"compute_id": server_id, "securitygroup": sec_group[0]}

        mock_get.return_value = [link]
        mock_list.return_value = sec_group
        ret = self.controller.show(None, link_id)
        self.assertIsInstance(ret, securitygroup_link.SecurityGroupLink)
Example #13
0
    def list_security_groups(self, req):
        """List security groups

        :param req: the incoming request
        """
        path = "os-security-groups"
        tenant_id = self.tenant_from_req(req)
        path = "/%s/%s" % (tenant_id, path)
        os_req = self._get_req(req, path=path,
                               method="GET")
        response = os_req.get_response(self.app)
        sec = self.get_from_response(response, "security_groups", [])
        ooi_sec = os_helpers.build_security_group_from_nova(sec)
        return ooi_sec
Example #14
0
    def test_list_server_security_links(self, mock_get, mock_list):
        tenant_id = fakes_nova.tenants["baz"]["id"]
        servers = fakes_nova.servers[tenant_id]
        mock_list.return_value = servers
        sg = fakes_nova.security_groups[tenant_id]
        segroup = os_helpers.build_security_group_from_nova(sg)[0]
        mock_get.return_value = [segroup]
        ret = self.helper.list_server_security_links(None)
        cont = 0
        for server in servers:
            self.assertEqual(server["id"], ret[cont]['compute_id'])
            self.assertEqual(segroup["title"],
                             ret[cont]['securitygroup']["title"])

            cont += 1
Example #15
0
    def _get_server_security_group(self, req, server_id):
        """Get security group from a server

        :param req: incoming request
        :param server_id: server id
        :return: information about the security group
        """
        path = "os-security-groups"
        tenant_id = self.tenant_from_req(req)
        path = "/%s/servers/%s/%s" % (tenant_id, server_id, path)
        os_req = self._get_req(req, path=path, method="GET")
        response = os_req.get_response(self.app)
        sec = self.get_from_response(response, "security_groups", [])
        ooi_sec = os_helpers.build_security_group_from_nova(sec)
        return ooi_sec
Example #16
0
 def test_index(self, mock_list):
     tenant_id = fakes_nova.tenants['bar']["id"]
     servers = fakes_nova.servers[tenant_id]
     sg = fakes_nova.security_groups[tenant_id]
     segroup = os_helpers.build_security_group_from_nova(sg)[0]
     links = []
     for server in servers:
         link = {
             "compute_id": server["id"],
             "securitygroup": segroup
         }
         links.append(link)
     mock_list.return_value = links
     ret = self.controller.index(None)
     self.assertIsInstance(ret, collection.Collection)
Example #17
0
    def test_list_server_security_links(self, mock_get, mock_list):
        tenant_id = fakes_nova.tenants["baz"]["id"]
        servers = fakes_nova.servers[tenant_id]
        mock_list.return_value = servers
        sg = fakes_nova.security_groups[tenant_id]
        segroup = os_helpers.build_security_group_from_nova(sg)[0]
        mock_get.return_value = [segroup]
        ret = self.helper.list_server_security_links(None)
        cont = 0
        for server in servers:
            self.assertEqual(server["id"],
                             ret[cont]['compute_id'])
            self.assertEqual(segroup["title"],
                             ret[cont]['securitygroup']["title"])

            cont += 1
Example #18
0
    def test_show(self, mock_list, mock_get):
        tenant_id = fakes_nova.tenants['baz']["id"]
        server = fakes_nova.servers[tenant_id][0]
        server_id = server['id']
        secgroup_name = server['security_groups'][0]["name"]
        link_id = '%s_%s' % (server_id, secgroup_name)
        sec_group = os_helpers.build_security_group_from_nova(
            fakes_nova.security_groups[tenant_id]
        )
        link = {
            "compute_id": server_id,
            "securitygroup": sec_group[0]
        }

        mock_get.return_value = [link]
        mock_list.return_value = sec_group
        ret = self.controller.show(None, link_id)
        self.assertIsInstance(ret, securitygroup_link.SecurityGroupLink)
Example #19
0
 def test_create_security_group(self, m_t, m_rq):
     tenant_id = fakes_nova.tenants["baz"]["id"]
     m_t.return_value = tenant_id
     sc_group = fakes_nova.security_groups[tenant_id][0]
     occi_os_group = os_helpers.build_security_group_from_nova(
         fakes_nova.security_groups[tenant_id]
     )[0]
     resp = fakes_network.create_fake_json_resp(
         {"security_group": sc_group}, 200
     )
     req_mock = mock.MagicMock()
     req_mock.get_response.return_value = resp
     resp_rule1 = fakes_network.create_fake_json_resp(
         {"security_group_rule": sc_group['rules'][0]}, 200
     )
     req_mock_rule1 = mock.MagicMock()
     req_mock_rule1.get_response.return_value = resp_rule1
     resp_rule2 = fakes_network.create_fake_json_resp(
         {"security_group_rule": sc_group['rules'][1]}, 200
     )
     req_mock_rule2 = mock.MagicMock()
     req_mock_rule2.get_response.return_value = resp_rule2
     m_rq.side_effect = [req_mock, req_mock_rule1, req_mock_rule2]
     ret = self.helper.create_security_group(
         None,
         name=occi_os_group['title'],
         description=occi_os_group['summary'],
         rules=occi_os_group['rules']
     )
     cont = 0
     for r in ret["rules"]:
         self.assertEqual(
             occi_os_group['rules'][cont]['protocol'], r["protocol"]
         )
         self.assertEqual(
             occi_os_group['rules'][cont]['range'], r["range"]
         )
         self.assertEqual(
             occi_os_group['rules'][cont]['port'], r["port"])
         self.assertEqual(
             occi_os_group['rules'][cont]['type'], r["type"])
         cont += 1
Example #20
0
    def _get_server_security_group(self, req, server_id):
        """Get security group from a server

        :param req: incoming request
        :param server_id: server id
        :return: information about the security group
        """
        path = "os-security-groups"
        tenant_id = self.tenant_from_req(req)
        path = "/%s/servers/%s/%s" % (tenant_id,
                                      server_id,
                                      path
                                      )
        os_req = self._get_req(req, path=path,
                               method="GET")
        response = os_req.get_response(self.app)
        sec = self.get_from_response(response,
                                     "security_groups", [])
        ooi_sec = os_helpers.build_security_group_from_nova(sec)
        return ooi_sec
Example #21
0
 def test_get_server_security_group(self, mock_tenant, mock_get):
     tenant_id = fakes_nova.tenants["baz"]["id"]
     server_id = uuid.uuid4().hex
     sc_group = fakes_nova.security_groups[tenant_id]
     mock_tenant.return_value = tenant_id
     resp = fakes_network.create_fake_json_resp(
         {"security_groups": sc_group}, 200)
     req_mock = mock.MagicMock()
     req_mock.get_response.return_value = resp
     mock_get.return_value = req_mock
     ret = self.helper._get_server_security_group(None, server_id)
     segroup = os_helpers.build_security_group_from_nova(sc_group)
     cont = 0
     for s in segroup:
         self.assertEqual(s, ret[cont])
         cont += 1
     mock_get.assert_called_with(
         None,
         method="GET",
         path="/%s/servers/%s/os-security-groups" % (tenant_id, server_id),
     )
Example #22
0
 def test_get_server_security_group(self, mock_tenant, mock_get):
     tenant_id = fakes_nova.tenants["baz"]["id"]
     server_id = uuid.uuid4().hex
     sc_group = fakes_nova.security_groups[tenant_id]
     mock_tenant.return_value = tenant_id
     resp = fakes_network.create_fake_json_resp(
         {"security_groups": sc_group}, 200
     )
     req_mock = mock.MagicMock()
     req_mock.get_response.return_value = resp
     mock_get.return_value = req_mock
     ret = self.helper._get_server_security_group(None, server_id)
     segroup = os_helpers.build_security_group_from_nova(
         sc_group
     )
     cont = 0
     for s in segroup:
         self.assertEqual(s, ret[cont])
         cont += 1
     mock_get.assert_called_with(
         None, method="GET",
         path="/%s/servers/%s/os-security-groups" % (tenant_id,
                                                     server_id),
     )