Commit dff9695f authored by Dimitris Fragkos's avatar Dimitris Fragkos
Browse files

create ACL net-slice info from service api descriptions and remove from config.yml

parent 2c66ad5e
Loading
Loading
Loading
Loading
Loading
+25 −3
Original line number Diff line number Diff line
@@ -29,13 +29,11 @@ class InternalServiceOps(Resource):
            allowed_total_invocations = settings.get("allowed_total_invocations", 100)
            allowed_invocations_per_second = settings.get("allowed_invocations_per_second", 10)
            time_range_days = settings.get("allowed_invocation_time_range_days", 365)
            net_slice_info = settings.get("net_slice_info", [])  
        else:
            current_app.logger.error("CAPIF Configuration not found, applying all values to 0.")
            allowed_total_invocations = 0
            allowed_invocations_per_second = 0
            time_range_days = 0
            net_slice_info = []

        res = mycol.find_one(
            {"service_id": service_id, "aef_id": aef_id}, {"_id": 0})
@@ -45,6 +43,8 @@ class InternalServiceOps(Resource):
                f"Adding invoker ACL for invoker {invoker_id}")
            range_list = [TimeRangeList(
                datetime.utcnow(), datetime.utcnow()+timedelta(days=time_range_days))]

            net_slice_info = res.get("net_slice_info", [])
            invoker_acl = ApiInvokerPolicy(
                invoker_id, allowed_total_invocations, allowed_invocations_per_second, range_list, net_slice_info)
            r = mycol.find_one({"service_id": service_id, "aef_id": aef_id,
@@ -73,8 +73,30 @@ class InternalServiceOps(Resource):
                f"Creating service ACLs for service: {service_id}")
            range_list = [TimeRangeList(
                datetime.utcnow(), datetime.utcnow()+timedelta(days=time_range_days))]

            services = self.db.get_col_by_name(self.db.service_api_descriptions)

            service_api = services.find_one(
                {
                    "api_id": service_id,
                    "$or": [
                        {"aef_profiles.aef_id": aef_id},
                        {"api_status.aef_ids": aef_id},
                    ],
                },
                {"_id": 0, "net_slice_info": 1},
            )
            net_slice_info = []
            if service_api:
                net_slice_info = service_api.get("net_slice_info", [])

            invoker_acl = ApiInvokerPolicy(
                invoker_id, allowed_total_invocations, allowed_invocations_per_second, range_list, net_slice_info)
                invoker_id,
                allowed_total_invocations,
                allowed_invocations_per_second,
                range_list,
                net_slice_info,
            )

            service_acls = {
                "service_id": service_id,
+3 −0
Original line number Diff line number Diff line
@@ -18,6 +18,9 @@ class MongoDatabse():
        self.config = Config().get_config()
        self.db = self.__connect()
        self.acls = self.config['mongo']['col']
        self.service_api_descriptions = self.config['mongo'].get(
            'col_services', 'serviceapidescriptions'
        )


    def get_col_by_name(self, name):
+0 −11
Original line number Diff line number Diff line
@@ -28,17 +28,6 @@ capif_configuration:
      allowed_invocation_time_range_days: 365
      allowed_invocations_per_second: 10
      allowed_total_invocations: 5
      net_slice_info:
        - snssai:
            sst: 1
            sd: "000001"
          nsiId: "string"
          ensi: "string"
        - snssai:
            sst: 2
            sd: "000001"
          nsiId: "string"
          ensi: "string"
    certificates_expiry:
      ttl_invoker_cert: 4300h
      ttl_provider_cert: 4300h