Edge-home-orchestration-go: لا يمكن لـ [DataStorage] العثور على الجهاز في ذاكرة التخزين المؤقت

تم إنشاؤها على ٨ يونيو ٢٠٢١  ·  10تعليقات  ·  مصدر: lf-edge/edge-home-orchestration-go

صف الخلل
يتعذر على تزامن الحافة العثور على الجهاز في ذاكرة التخزين المؤقت إذا كان تزامن الحافة يسجل تكوين الجهاز إلى edgex لأول مرة. يعمل بعد إعادة التشغيل.

لإعادة إنتاج

  1. مسح قاعدة بيانات redis
  2. قم بتشغيل تزامن الحافة مع ملفات تكوين DataStorage
  3. استدعاء API من حيث تحميل قيمة Int

سجل من تنسيق الحافة

level=INFO ts=2021-06-08T11:09:41.747141457Z app=datastorage source=config.go:193 msg="Loaded configuration from ./res/configuration.toml"

level=INFO ts=2021-06-08T11:09:41.748290804Z app=datastorage source=config.go:304 msg="Using local configuration from file (0 envVars overrides applied)"
level=INFO ts=2021-06-08T11:09:41.748336679Z app=datastorage source=httpserver.go:99 msg="Web server starting (127.0.0.1:49986)"
level=INFO ts=2021-06-08T11:09:41.748393149Z app=datastorage source=init.go:144 msg="Check Metadata service's status by ping..."
level=INFO ts=2021-06-08T11:09:41.748528479Z app=datastorage source=init.go:144 msg="Check Data service's status by ping..."
level=INFO ts=2021-06-08T11:09:41.749614627Z app=datastorage source=init.go:68 msg="Service clients initialize successful."
level=INFO ts=2021-06-08T11:09:41.750747311Z app=datastorage source=service.go:207 msg="Addressable datastorage doesn't exist, creating a new one"
level=DEBUG ts=2021-06-08T11:09:41.751916563Z app=datastorage source=service.go:153 msg="Trying to find DeviceService: datastorage"
level=INFO ts=2021-06-08T11:09:41.752643978Z app=datastorage source=service.go:157 msg="DeviceService datastorage doesn't exist, creating a new one"
level=DEBUG ts=2021-06-08T11:09:41.754344754Z app=datastorage source=service.go:169 msg="New DeviceService Id: 6faac9ac-6ec1-41ee-8661-927954bb7ea1"
INFO[2021-06-08T11:09:41Z]storagedriver.go:43 Initialize [storagedriver] Device service intialize started
level=DEBUG ts=2021-06-08T11:09:41.75790956Z app=datastorage source=restrouter.go:119 route=/api/v1/resource/{deviceName}/{resourceName} methods=[POST] msg="Route added"
level=INFO ts=2021-06-08T11:09:41.757963324Z app=datastorage source=storagehandler.go:66 msg="Route /api/v1/resource/{deviceName}/{resourceName} added."
level=INFO ts=2021-06-08T11:09:41.759800964Z app=datastorage source=restrouter.go:75 msg="Registering v2 routes..."
level=DEBUG ts=2021-06-08T11:09:41.76021791Z app=datastorage source=profiles.go:47 msg="created absolute path for loading pre-defined Device Profiles: /edge-orchestration/res"
level=DEBUG ts=2021-06-08T11:09:41.76330122Z app=datastorage source=profiles.go:172 msg="Getting EnableValueDescriptorManagement configuration value from Core Metadata"
level=DEBUG ts=2021-06-08T11:09:41.763993203Z app=datastorage source=devices.go:29 msg="Loading pre-define Devices from configuration"
level=DEBUG ts=2021-06-08T11:09:41.764037017Z app=datastorage source=devices.go:35 msg="Device datastorage doesn't exist, creating a new one"
level=DEBUG ts=2021-06-08T11:09:41.764581907Z app=datastorage source=devices.go:75 msg="Adding Device: {\"origin\":1623150581764,\"description\":\"RESTful Device\",\"name\":\"datastorage\",\"adminState\":\"UNLOCKED\",\"operatingState\":\"ENABLED\",\"protocols\":{\"other\":{}},\"labels\":[\"rest\",\"json\"],\"service\":{\"origin\":1623150581751,\"id\":\"6faac9ac-6ec1-41ee-8661-927954bb7ea1\",\"name\":\"datastorage\",\"operatingState\":\"ENABLED\",\"addressable\":{\"origin\":1623150581749,\"id\":\"7b016ca7-5b53-4aa3-88e5-6f4a0b484271\",\"name\":\"datastorage\",\"protocol\":\"HTTP\",\"method\":\"POST\",\"address\":\"127.0.0.1\",\"port\":49986,\"path\":\"/api/v1/callback\",\"baseURL\":\"http://127.0.0.1:49986\",\"url\":\"http://127.0.0.1:49986/api/v1/callback\"},\"adminState\":\"UNLOCKED\"},\"profile\":{\"description\":\"REST Device\",\"id\":\"3b356db4-fe39-4dc4-bd25-8bebef5e15ce\",\"name\":\"datastorage\",\"manufacturer\":\"Home Edge\",\"model\":\"Home Edge\",\"labels\":[\"rest\",\"json\",\"numeric\",\"float\",\"int\"],\"deviceResources\":[{\"description\":\"json\",\"name\":\"json\",\"properties\":{\"value\":{\"type\":\"String\",\"readWrite\":\"RW\",\"mediaType\":\"application/json\"},\"units\":{\"type\":\"String\",\"readWrite\":\"R\"}}},{\"name\":\"int\",\"properties\":{\"value\":{\"type\":\"Int64\",\"readWrite\":\"RW\",\"mediaType\":\"text/plain\"},\"units\":{\"type\":\"String\",\"readWrite\":\"R\"}}},{\"description\":\"float\",\"name\":\"float\",\"properties\":{\"value\":{\"type\":\"Float64\",\"readWrite\":\"RW\",\"mediaType\":\"text/plain\"},\"units\":{\"type\":\"String\",\"readWrite\":\"R\"}}},{\"description\":\"jpeg\",\"name\":\"jpeg\",\"properties\":{\"value\":{\"type\":\"Binary\",\"readWrite\":\"RW\",\"mediaType\":\"image/jpeg\"},\"units\":{\"type\":\"String\",\"readWrite\":\"R\"}}},{\"description\":\"png\",\"name\":\"png\",\"properties\":{\"value\":{\"type\":\"Binary\",\"readWrite\":\"RW\",\"mediaType\":\"image/png\"},\"units\":{\"type\":\"String\",\"readWrite\":\"R\"}}},{\"description\":\"string\",\"name\":\"string\",\"properties\":{\"value\":{\"type\":\"String\",\"readWrite\":\"RW\",\"mediaType\":\"text/plain\"},\"units\":{\"type\":\"String\",\"readWrite\":\"R\"}}}]}}"
level=INFO ts=2021-06-08T11:09:41.766971106Z app=datastorage source=autodiscovery.go:32 msg="AutoDiscovery stopped: disabled by configuration"
level=INFO ts=2021-06-08T11:09:41.767031297Z app=datastorage source=autodiscovery.go:37 msg="AutoDiscovery stopped: interval error in configuration"
level=INFO ts=2021-06-08T11:09:41.76706353Z app=datastorage source=autodiscovery.go:41 msg="AutoDiscovery stopped: ProtocolDiscovery not implemented"
level=INFO ts=2021-06-08T11:09:41.767094873Z app=datastorage source=message.go:50 msg="Service dependencies resolved..."
level=INFO ts=2021-06-08T11:09:41.767156624Z app=datastorage source=message.go:51 msg="Starting datastorage to be replaced by makefile "
level=INFO ts=2021-06-08T11:09:41.767182718Z app=datastorage source=message.go:58 msg="Service started in: 20.913936ms"


level=DEBUG ts=2021-06-08T11:09:51.973581107Z app=datastorage source=storagehandler.go:84 msg="Received POST for Device=datastorage Resource=int"
level=INFO ts=2021-06-08T11:09:51.973670443Z app=datastorage source=manageddevices.go:71 msg="Device datastorage cannot be found in cache"
level=ERROR ts=2021-06-08T11:09:51.973714012Z app=datastorage source=storagehandler.go:88 msg="Incoming reading ignored. Device 'datastorage' not found"

تكوين بيئة الاختبار (يرجى استكمال المعلومات التالية):

  • إصدار البرنامج الثابت: Ubuntu 20.04
  • الأجهزة: x86-64
  • إصدار تنسيق الحواف: جوز الهند
bug help wanted high priority

التعليق الأكثر فائدة

.كلمة البحث {
لون الخلفية: # ffee94
}
ص {
حجم الخط: 10 نقطة ؛ الهامش السفلي: 5 بكسل ؛ عائلة الخط: Arial، arial؛ MARGIN-TOP: 5 بكسل
}
TD {
حجم الخط: 10 نقطة ؛ الهامش السفلي: 5 بكسل ؛ عائلة الخط: Arial، arial؛ MARGIN-TOP: 5 بكسل
}
أنا {
حجم الخط: 10 نقطة ؛ الهامش السفلي: 5 بكسل ؛ عائلة الخط: Arial، arial؛ MARGIN-TOP: 5 بكسل
}
هيئة {
حجم الخط: 10 نقطة ؛ عائلة الخط: Arial، arial
}

ص {
حجم الخط: 10 نقطة ؛ الهامش السفلي: 5 بكسل ؛ عائلة الخط: Arial، arial؛ MARGIN-TOP: 5 بكسل
}


مرحبا بيتر،

المشكلة ليست من جانب EdgeX. بعد المناقشة مع Cloud Tsai ، فهمت استخدامه لعنوان IP خاطئ بسبب عدم تمكن coredata من استدعاء رد الاتصال وبالتالي لم يتم تحديث ذاكرة التخزين المؤقت. بالنسبة للجهاز المحلي ، يتم حل المشكلة باستخدام عنوان IP الخاص بـ docker0 كما اختبرته.
ولكن المشكلة الآن هي السيناريو الذي ذكره Taewan جيدًا أن EdgeX يعمل بشكل مستقل على جهاز واحد وأن Edge-Orchestration يعمل على جهاز آخر متصل بالشبكة. لذلك يجب اختبار هذا بغض النظر عن مشكلة ذاكرة التخزين المؤقت. أحاول القيام بهذا الإعداد المشابه. على الرغم من أنني اختبرت السيناريو المماثل مع عامل pinging العادي (جبال الألب) وتمكنت من إعداد الاتصال باستخدام شبكة التراكب. الآن أنا بحاجة إلى تجربة تنسيق الحافة.

مع الشكر و التقدير
نيتو

--------- رسالة أصلية ---------
المرسل: Peter Moonki @ . >التاريخ: 2021-09-07 07:46 (GMT + 5: 30)العنوان: Re: [lf-edge / edge-home-orchestration-go] [DataStorage] لا يمكنه العثور على الجهاز في ذاكرة التخزين المؤقت (# 312)إلى: * @ . >
CC: Nitu Sajjanlal @ . > ، @ . * >

@ nitu-s-gupta ما رأيك في حل هذه المشكلة من HomeEdge بدلاً من طلبها في EdgeX ، حيث يبدو لي أن الأساس المنطقي لطلبنا يتعارض مع الجهاز الحالي-sdk-go في EdgeX؟
- لقد تلقيت هذا لأنه تم الإشارة إليك. قم بالرد على هذا البريد الإلكتروني مباشرةً ، أو قم بعرضه على GitHub ، أو قم بإلغاء الاشتراك. إشعارات انتقالية أثناء التنقل باستخدام GitHub Mobile لنظام التشغيل iOS أو Android.

ال 10 كومينتر

مرحبًا @ t25kim ،

لقد قمت بتكرار الخطأ. يحدث هذا عندما نحاول إضافة جهاز جديد أيضًا.

مثال :

  1. إذا قمنا بتحرير اسم ملف تعريف YAML
  2. قم بتحرير اسم الجهاز في ملف التكوين

لن يتم اكتشاف هذا الجهاز حتى نقوم بالبناء للمرة الثانية. لقد حاولت هذا عدة مرات ويبدو أن هذه المشكلة متسقة. أنا أتحقق مما إذا كانت هذه مشكلة في إصدار هانوي أو إذا كان يجب القيام بها من جانبنا.

مرحبًا @ t25kim ،

لقد قمت بتكرار الخطأ. يحدث هذا عندما نحاول إضافة جهاز جديد أيضًا.

مثال :

  1. إذا قمنا بتحرير اسم ملف تعريف YAML
  2. قم بتحرير اسم الجهاز في ملف التكوين

لن يتم اكتشاف هذا الجهاز حتى نقوم بالبناء للمرة الثانية. لقد حاولت هذا عدة مرات ويبدو أن هذه المشكلة متسقة. أنا أتحقق مما إذا كانت هذه مشكلة في إصدار هانوي أو إذا كان يجب القيام بها من جانبنا.

شكرا @ صن شارما.
واجهت نفس المشكلة مع EdgeX v2.0.0. يرجى اختباره باستخدام PR # 326.

هذه المشكلة من جانب EdgeX ، عند بدء تشغيل الخدمة ، يتم تحميل الأجهزة الموجودة بالفعل في البيانات الوصفية في ذاكرة التخزين المؤقت. لكن الأجهزة التي تمت إضافتها لا تضاف إلى ذاكرة التخزين المؤقت. ومن ثم لا يحدث هذا بعد إعادة التشغيل. لقد حاولت مع Device-rest.go. لاحظ نفس السلوك. التغييرات مطلوبة في device-sdk لمسبك edgex. الملفات التي قمت بفحصها (/internal/provision/devices.go) الخاصة بجهاز sdk إذا كان edgexfoundry. يسمى هذا عند بدء تشغيل الجهاز.

هذه المشكلة من جانب EdgeX ، عند بدء تشغيل الخدمة ، يتم تحميل الأجهزة الموجودة بالفعل في البيانات الوصفية في ذاكرة التخزين المؤقت. لكن الأجهزة التي تمت إضافتها لا تضاف إلى ذاكرة التخزين المؤقت. ومن ثم لا يحدث هذا بعد إعادة التشغيل. لقد حاولت مع Device-rest.go. لاحظ نفس السلوك. التغييرات مطلوبة في device-sdk لمسبك edgex. الملفات التي قمت بفحصها (/internal/provision/devices.go) الخاصة بجهاز sdk إذا كان edgexfoundry. يسمى هذا عند بدء تشغيل الجهاز.

@ nitu-s-gupta ماذا عن التعامل مع EdgeX معي ومحاولة حل هذه المشكلة؟ 😄

هذه المشكلة من جانب EdgeX ، عند بدء تشغيل الخدمة ، يتم تحميل الأجهزة الموجودة بالفعل في البيانات الوصفية في ذاكرة التخزين المؤقت. لكن الأجهزة التي تمت إضافتها لا تضاف إلى ذاكرة التخزين المؤقت. ومن ثم لا يحدث هذا بعد إعادة التشغيل. لقد حاولت مع Device-rest.go. لاحظ نفس السلوك. التغييرات مطلوبة في device-sdk لمسبك edgex. الملفات التي قمت بفحصها (/internal/provision/devices.go) الخاصة بجهاز sdk إذا كان edgexfoundry. يسمى هذا عند بدء تشغيل الجهاز.

اشكرك على مجهودك!
دعني أوضح بمزيد من التفصيل ، يجب أن ترسل edgex-metadata طلبًا (الدليل غير صحيح) إلى الخدمة لتحديث ذاكرة التخزين المؤقت. ومع ذلك ، فإن edgex-metadata لا تفعل ذلك.
عندما اتصلت بواجهة برمجة تطبيقات REST لتخزين البيانات ، تم تحديث ذاكرة التخزين المؤقت.

البيانات الوصفية edgex

curl http://localhost:48081/api/v1/device
[{"created":1629351516733,"modified":1629351516733,"origin":1629351516731,"description":"RESTful Device","id":"774deba4-5469-4c38-8c2a-93a0f3c08252","name":"edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2",

طلب CURL

$ curl -X 'POST' ' http: // localhost : 49986 / api / v1 / callback' -H 'Accept: / ' -H 'Content-Type: application / json' -d '{"type": "DEVICE "،" id ":" 774deba4-5469-4c38-8c2a-93a0f3c08252 "} '

سجل تزامن الحواف

INFO[2021-08-19T06:01:36Z]discovery.go:577 func1
level=INFO ts=2021-08-19T06:02:25.506828567Z app=datastorage source=device.go:72 msg="Added device: edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2"
INFO[2021-08-19T06:02:25Z]storagedriver.go:73 AddDevice [storagedriver] Device has been successfully added!!!!!! edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2
level=DEBUG ts=2021-08-19T06:02:25.50692288Z app=datastorage source=device.go:82 msg="Invoked driver.AddDevice callback for edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2"
level=DEBUG ts=2021-08-19T06:02:25.50693632Z app=datastorage source=device.go:89 msg="Handler - starting AutoEvents for device edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2"

أعتقد أنه سيتم إصلاح edgex أو يمكننا إضافة بعض التعليمات البرمجية إلى تخزين البيانات.
ماذا تفضل؟ (تعد مشاركة هذه المشكلة مع edgex أمرًا جيدًا للتعاون مفتوح المصدر

@ t25kim ما رأيك في إثارة مشكلة في edgex github من device sdk؟ بحيث يمكن تحديثها. يمكن إجراء الحل البديل مثل استدعاء واجهة برمجة التطبيقات. ولكن هناك شيء آخر لاحظته وهو storagedriver لدينا عمليات رد نداء ، يجب استدعاءها عند إضافة الجهاز. ولكن هذا أيضًا لم يتم التذرع به ، حيث سيتم تضمين خطوات العمل هناك

هذه المشكلة من جانب EdgeX ، عند بدء تشغيل الخدمة ، يتم تحميل الأجهزة الموجودة بالفعل في البيانات الوصفية في ذاكرة التخزين المؤقت. لكن الأجهزة التي تمت إضافتها لا تضاف إلى ذاكرة التخزين المؤقت. ومن ثم لا يحدث هذا بعد إعادة التشغيل. لقد حاولت مع Device-rest.go. لاحظ نفس السلوك. التغييرات مطلوبة في device-sdk لمسبك edgex. الملفات التي قمت بفحصها (/internal/provision/devices.go) الخاصة بجهاز sdk إذا كان edgexfoundry. يسمى هذا عند بدء تشغيل الجهاز.

اشكرك على مجهودك!
دعني أوضح بمزيد من التفصيل ، يجب أن ترسل edgex-metadata طلبًا (الدليل غير صحيح) إلى الخدمة لتحديث ذاكرة التخزين المؤقت. ومع ذلك ، فإن edgex-metadata لا تفعل ذلك.
عندما اتصلت بواجهة برمجة تطبيقات REST لتخزين البيانات ، تم تحديث ذاكرة التخزين المؤقت.

البيانات الوصفية edgex

curl http://localhost:48081/api/v1/device
[{"created":1629351516733,"modified":1629351516733,"origin":1629351516731,"description":"RESTful Device","id":"774deba4-5469-4c38-8c2a-93a0f3c08252","name":"edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2",

طلب CURL

$ curl -X 'POST' ' http: // localhost : 49986 / api / v1 / callback' -H 'Accept: _ / _' -H 'Content-Type: application / json' -d '{"type": "DEVICE"، "id": "774deba4-5469-4c38-8c2a-93a0f3c08252"} '

سجل تزامن الحواف

INFO[2021-08-19T06:01:36Z]discovery.go:577 func1
level=INFO ts=2021-08-19T06:02:25.506828567Z app=datastorage source=device.go:72 msg="Added device: edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2"
INFO[2021-08-19T06:02:25Z]storagedriver.go:73 AddDevice [storagedriver] Device has been successfully added!!!!!! edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2
level=DEBUG ts=2021-08-19T06:02:25.50692288Z app=datastorage source=device.go:82 msg="Invoked driver.AddDevice callback for edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2"
level=DEBUG ts=2021-08-19T06:02:25.50693632Z app=datastorage source=device.go:89 msg="Handler - starting AutoEvents for device edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2"

أعتقد أنه سيتم إصلاح edgex أو يمكننا إضافة بعض التعليمات البرمجية إلى تخزين البيانات.
ماذا تفضل؟ (تعد مشاركة هذه المشكلة مع edgex أمرًا جيدًا للتعاون مفتوح المصدر

jpwhitemn مرحبًا ، لقد قمنا

ماذا عن إثارة مشكلة في edgex github من device sdk ؟، بحيث يمكن تحديثها. يمكن إجراء الحل البديل مثل استدعاء واجهة برمجة التطبيقات. ولكن هناك شيء آخر لاحظته وهو storagedriver لدينا عمليات رد نداء ، يجب استدعاءها عند إضافة الجهاز. ولكن هذا أيضًا لم يتم التذرع به ، حيث سيتم تضمين خطوات العمل هناك

أوافق على مشاركة هذه المشكلة مع edgex. ومع ذلك ، إذا لم يتم تنفيذ التصحيح على edgex قبل الإصدار d من home ، فلنصلحه على Edge Orchestration.

.كلمة البحث {
لون الخلفية: # ffee94
}
ص {
حجم الخط: 10 نقطة ؛ الهامش السفلي: 5 بكسل ؛ عائلة الخط: Arial، arial؛ MARGIN-TOP: 5 بكسل
}
TD {
حجم الخط: 10 نقطة ؛ الهامش السفلي: 5 بكسل ؛ عائلة الخط: Arial، arial؛ MARGIN-TOP: 5 بكسل
}
أنا {
حجم الخط: 10 نقطة ؛ الهامش السفلي: 5 بكسل ؛ عائلة الخط: Arial، arial؛ MARGIN-TOP: 5 بكسل
}
هيئة {
حجم الخط: 10 نقطة ؛ عائلة الخط: Arial، arial
}

ص {
حجم الخط: 10 نقطة ؛ الهامش السفلي: 5 بكسل ؛ عائلة الخط: Arial، arial؛ MARGIN-TOP: 5 بكسل
}


مرحبا بيتر،

المشكلة ليست من جانب EdgeX. بعد المناقشة مع Cloud Tsai ، فهمت استخدامه لعنوان IP خاطئ بسبب عدم تمكن coredata من استدعاء رد الاتصال وبالتالي لم يتم تحديث ذاكرة التخزين المؤقت. بالنسبة للجهاز المحلي ، يتم حل المشكلة باستخدام عنوان IP الخاص بـ docker0 كما اختبرته.
ولكن المشكلة الآن هي السيناريو الذي ذكره Taewan جيدًا أن EdgeX يعمل بشكل مستقل على جهاز واحد وأن Edge-Orchestration يعمل على جهاز آخر متصل بالشبكة. لذلك يجب اختبار هذا بغض النظر عن مشكلة ذاكرة التخزين المؤقت. أحاول القيام بهذا الإعداد المشابه. على الرغم من أنني اختبرت السيناريو المماثل مع عامل pinging العادي (جبال الألب) وتمكنت من إعداد الاتصال باستخدام شبكة التراكب. الآن أنا بحاجة إلى تجربة تنسيق الحافة.

مع الشكر و التقدير
نيتو

--------- رسالة أصلية ---------
المرسل: Peter Moonki @ . >التاريخ: 2021-09-07 07:46 (GMT + 5: 30)العنوان: Re: [lf-edge / edge-home-orchestration-go] [DataStorage] لا يمكنه العثور على الجهاز في ذاكرة التخزين المؤقت (# 312)إلى: * @ . >
CC: Nitu Sajjanlal @ . > ، @ . * >

@ nitu-s-gupta ما رأيك في حل هذه المشكلة من HomeEdge بدلاً من طلبها في EdgeX ، حيث يبدو لي أن الأساس المنطقي لطلبنا يتعارض مع الجهاز الحالي-sdk-go في EdgeX؟
- لقد تلقيت هذا لأنه تم الإشارة إليك. قم بالرد على هذا البريد الإلكتروني مباشرةً ، أو قم بعرضه على GitHub ، أو قم بإلغاء الاشتراك. إشعارات انتقالية أثناء التنقل باستخدام GitHub Mobile لنظام التشغيل iOS أو Android.

شكرًا لك على التوضيح اللطيف ، @ nitu-s-gupta 😄

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات