আপনি প্রদত্ত ওয়েব ডেমো ব্যবহার করে অথবা সরাসরি REST API কল করে সিমুলেশন চালাতে পারেন।
ইনপুট এবং আউটপুট
ইনপুট এবং আউটপুট ফাইলগুলো টেরাফর্ম সেটআপের ক্লাউড স্টোরেজ বাকেট ব্যবহার করে।
ইনপুট ডিরেক্টরিতে অবশ্যই metrics_config.zip এবং publisher_config.zip ফাইল দুটি থাকতে হবে। আপনি প্রয়োজন অনুযায়ী এর পাথ নির্ধারণ করতে পারেন।
আউটপুট বাকেটটিতে একটি simulations ডিরেক্টরি থাকে, যেখানে প্রতিটি সিমুলেশন তার আইডি দ্বারা সংরক্ষিত থাকে। প্রতিটি সিমুলেশন ডিরেক্টরিতে কপি করা ইনপুট ফাইলসহ একটি ইনপুট ফোল্ডার এবং একটি আউটপুট ফোল্ডার থাকে। আউটপুট ফোল্ডারটিতে বাগরিপোর্ট, লগক্যাট ফাইল এবং তৈরি করা সিমুলেটর ফাইলগুলো থাকে।
ওয়েব ডেমো ব্যবহার করুন
প্ল্যাটফর্মটিতে প্রদর্শনের উদ্দেশ্যে একটি ফ্লাটার-ভিত্তিক ওয়েব অ্যাপ্লিকেশন অন্তর্ভুক্ত রয়েছে, যা আপনাকে সিমুলেশন দেখতে, তৈরি করতে এবং পরিচালনা করতে দেয়। আপনাকে আপনার প্রয়োজন অনুযায়ী নিজস্ব ইউজার ইন্টারফেস তৈরি করতে উৎসাহিত করা হচ্ছে।
ডেমো অ্যাপটি অ্যাপ ইঞ্জিনে ডেপ্লয় করা হয়েছে এবং ব্যবহারকারীদের একটি গুগল অ্যাকাউন্ট দিয়ে সাইন ইন করতে হবে। এটি আপনার গুগল ক্লাউড প্রজেক্টে কনফিগার করা একটি OAuth 2.0 ক্লায়েন্ট আইডি ব্যবহার করে সুরক্ষিত থাকে। ডেপ্লয় করা ক্লাউড ফাংশনগুলো ইনভোক করার জন্য সাইন-ইন করা অ্যাকাউন্টটির অবশ্যই IAM পারমিশন থাকতে হবে। ব্যবহারকারী অ্যাকাউন্টগুলোতে প্রয়োজনীয় পারমিশন, যেমন ক্লাউড ফাংশনস ইনভোকার রোল ( roles/cloudfunctions.invoker ), প্রদান করার নির্দেশাবলীর জন্য ‘ম্যানেজ অ্যাক্সেস টু ক্লাউড ফাংশনস’ দেখুন।
ব্যবহারকারীর কর্মপ্রবাহ
- সাইন ইন : আপনি আপনার গুগল অ্যাকাউন্ট দিয়ে সাইন ইন করবেন, যা OAuth 2.0 প্রক্রিয়ার মাধ্যমে প্রমাণীকৃত।
- সিমুলেশন দেখুন : মূল পৃষ্ঠাটি ফায়ারস্টোর ডেটাবেস থেকে তথ্য সংগ্রহের মাধ্যমে অতীতের ও বর্তমানের সমস্ত সিমুলেশনের তালিকা দেখায়, যেখানে কার্য সম্পাদনের সমস্ত তথ্য সংরক্ষিত থাকে।
- সিমুলেশন তৈরি করুন : নিচের-ডান কোণায় থাকা
+অ্যাকশন বোতামে ক্লিক করে আপনি একটি নতুন সিমুলেশন শিডিউল করার জন্য একটি ফর্মে যেতে পারেন। আপনাকে ইনপুট পাথ, বিল্ড আইডি এবং ইনস্ট্যান্স টাইপ সহ বেশ কিছু প্যারামিটার প্রদান করতে হবে। আরও তথ্যের জন্য, সিমুলেশন তৈরি করুন দেখুন। - মনিটরের অবস্থা : নতুন সিমুলেশনের অবস্থা (
PENDING,RUNNING,COMPLETED, ইত্যাদি) দেখানোর জন্য সিমুলেশন তালিকাটি আপডেট হয়। - ফলাফল দেখুন : একটি সিমুলেশন সম্পন্ন হওয়ার পর, আপনি তৈরি হওয়া রিপোর্ট এবং আর্টিফ্যাক্টগুলো দেখতে পারবেন। ইনপুট ফাইল, আউটপুট রিপোর্ট, লগ, লগক্যাট এবং বাগরিপোর্ট ক্লাউড স্টোরেজে সংরক্ষিত থাকে।
- সিমুলেশন মুছে ফেলুন : আপনি একটি নির্ধারিত বা চলমান সিমুলেশন বাতিল করতে পারেন।
এপিআই ব্যবহার
অটোমেশন এবং অন্যান্য সিস্টেমের সাথে ইন্টিগ্রেশনের জন্য আপনি REST API ব্যবহার করতে পারেন।
অথেনটিকেশন সেকশনে এবং এন্ডপয়েন্ট ডেফিনিশনে ব্যবহৃত প্লেসহোল্ডার CLOUD_FUNCTION_URL বলতে সেই ক্লাউড ফাংশনের বেস ইউআরএলকে বোঝায়, যাকে কল করা হচ্ছে। আপনি গুগল ক্লাউড কনসোলের ক্লাউড ফাংশনস পেজে ফাংশন ইউআরএলগুলো খুঁজে পেতে পারেন; প্রতিটি ফাংশনের ইউআরএল তার ফাংশন ডিটেইলস পেজের ট্রিগার ট্যাবে দেখানো থাকে। বিকল্পভাবে, একটি apply কমান্ড চালানোর পর প্রিন্ট হওয়া টেরাফর্ম আউটপুটগুলোতেও আপনি এই ইউআরএলগুলো খুঁজে পেতে পারেন।
প্রমাণীকরণ
সমস্ত এপিআই অনুরোধ অবশ্যই একটি আইডেন্টিটি টোকেন দিয়ে প্রমাণীকৃত হতে হবে, যা আহ্বানকারীর পরিচয় প্রমাণ করে। উক্ত আইডেন্টিটির (ব্যবহারকারী বা পরিষেবা অ্যাকাউন্ট) টার্গেট ফাংশনে ক্লাউড ফাংশনস ইনভোকার পারমিশন থাকতে হবে।
১. ব্যবহারকারীর আহ্বান (লোকাল এবং সিএলআই) যখন কোনো লোকাল মেশিন বা গুগল ক্লাউড-বহির্ভূত পরিবেশ থেকে এপিআই আহ্বান করা হবে, তখন আপনাকে অবশ্যই ব্যবহারকারী অ্যাকাউন্টের জন্য প্রাপ্ত গুগল-প্রদত্ত আইডেন্টিটি টোকেন ব্যবহার করতে হবে।
TOKEN=$(gcloud auth print-identity-token)২. সার্ভিস অ্যাকাউন্ট আহ্বান (গুগল ক্লাউডের মধ্যে) যখন কোনো গুগল ক্লাউড রিসোর্স (যেমন, একটি Compute Engine VM, অন্য কোনো ক্লাউড ফাংশন, বা একটি Kubernetes ক্লাস্টার) থেকে API আহ্বান করা হয়, তখন রিসোর্সটির সাথে সংযুক্ত সার্ভিস অ্যাকাউন্টের আইডেন্টিটি ব্যবহার করা উচিত। টোকেনটি রিসোর্সটির মেটাডেটা সার্ভার থেকে সংগ্রহ করতে হবে।
TOKEN=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=CLOUD_FUNCTION_URL" -H "Metadata-Flavor: Google")
প্রাপ্ত টোকেনটি আপনার অনুরোধের Authorization হেডারে Bearer টোকেন হিসেবে অন্তর্ভুক্ত করুন।
এন্ডপয়েন্ট
ক্লাউড টেলিমেট্রি সিমুলেশন স্ট্যাকের ব্যবহারকারী-মুখী এন্ডপয়েন্টগুলো আপনাকে সিমুলেশন তৈরি ও মুছে ফেলতে অথবা ডেটাবেস থেকে সিমুলেশনের তথ্য পড়তে দেয়।
একটি সিমুলেশন তৈরি করুন
এই এন্ডপয়েন্টটি একটি নতুন সিমুলেশন অনুরোধ তৈরি করে এবং সেটিকে সম্পাদনের জন্য সময়সূচী নির্ধারণ করে।
- এন্ডপয়েন্ট :
POST https:// CLOUD_FUNCTION_URL /simulation-orchestrator-receive-request অনুরোধের মূল অংশ :
{ "build_id": "latest", "file_path": "inputs/my-test-case/", "instance_type": "n1-standard-8", "owner": "user@example.com", "max_simulation_time": 300, "max_report_count": 5 }-
build_id(স্ট্রিং): ব্যবহার করার জন্য এজেন্ট ডকার ইমেজের ট্যাগ (যেমন, "latest")। গুরুত্বপূর্ণ : এটি অবশ্যই ইনফ্রাস্ট্রাকচারের অনুমোদিত ইমেজ ম্যাপে সংজ্ঞায়িত একটি ট্যাগের সাথে মিলতে হবে (যেমন, "latest", "stable")। যদি Terraform-এ একটি SHA256 ম্যাপ সংজ্ঞায়িত করা থাকে, তাহলে সিস্টেম অজানা ট্যাগ প্রত্যাখ্যান করে। -
file_path(স্ট্রিং): GCS বাকেটের মধ্যেmetrics_config.zipএবংpublisher_config.zipফাইল দুটি যে ফোল্ডারে রয়েছে, তার পাথ। -
instance_type(স্ট্রিং): কম্পিউট ইঞ্জিন মেশিন টাইপ। এই টাইপটিকে অবশ্যই নেস্টেড ভার্চুয়ালাইজেশন সমর্থন করতে হবে, যেমনn1,n2, বাt2dসিরিজ। আরও তথ্যের জন্য, নেস্টেড ভার্চুয়ালাইজেশন ওভারভিউ দেখুন। -
owner(স্ট্রিং): সিমুলেশনটি শুরু করা ব্যবহারকারীর ইমেল। -
max_simulation_time(পূর্ণসংখ্যা): সেকেন্ডে সিমুলেশনটি চলার সর্বোচ্চ সময়। -
max_report_count(পূর্ণসংখ্যা): টেলিমেট্রি রিপোর্টের সংখ্যা, যার পরে সিমুলেশনটি শেষ হবে।
-
সফল প্রতিক্রিয়া (200 OK) :
{ "id": "sim-a1b2c3d4e5f6" }
একটি সিমুলেশন মুছে ফেলুন
এই এন্ডপয়েন্টটি কোনো অপেক্ষাধীন বা চলমান সিমুলেশন বাতিল করে এবং এর সাথে যুক্ত রিসোর্সগুলো মুছে ফেলে।
- এন্ডপয়েন্ট :
POST https:// CLOUD_FUNCTION_URL /simulation-orchestrator-delete-simulation - হেডার :
-
Content-Type: application/json
-
অনুরোধের মূল অংশ :
{ "id": "sim-a1b2c3d4e5f6" }সফল প্রতিক্রিয়া (200 OK) : একটি খালি JSON অবজেক্ট
{}।
সিমুলেশন ডেটা পড়ুন
সিমুলেশন ডেটা পড়ার জন্য, আপনি simulation-reader ফাংশনটি ব্যবহার করতে পারেন। এই এন্ডপয়েন্টগুলো হিস্ট্রি, স্ট্যাটাস এবং সিস্টেম কনফিগারেশন পুনরুদ্ধার করতে GET মেথড ব্যবহার করে।
১. সিমুলেশনগুলির তালিকা
ফিল্টারিং এবং সর্টিং সুবিধা সহ সিমুলেশনগুলির একটি পৃষ্ঠাভিত্তিক তালিকা পুনরুদ্ধার করে।
- এন্ডপয়েন্ট :
GET https:// CLOUD_FUNCTION_URL /simulation-reader/simulations কোয়েরি প্যারামিটার (সবগুলো ঐচ্ছিক):
-
status(স্ট্রিং): সিমুলেশনের অবস্থা অনুযায়ী ফিল্টার করুন (running,Simulation request received,cancelled, বাcompleted)। -
owner(স্ট্রিং): মালিকের ইমেইল দিয়ে ফিল্টার করুন। -
sort_by(string): যে ফিল্ড অনুসারে সাজানো হবে (received_at,status_updated_at,started_at)। ডিফল্ট হিসেবেreceived_atব্যবহৃত হয়। -
sort_order(স্ট্রিং): সাজানোর দিক,ascবাdesc। ডিফল্ট হলোdesc। -
page_size(পূর্ণসংখ্যা): প্রতি পৃষ্ঠায় ফলাফলের সংখ্যা। ডিফল্ট মান ২০। -
page_token(স্ট্রিং): ফলাফলের পরবর্তী পৃষ্ঠা আনার জন্য টোকেন।
-
অনুরোধের উদাহরণ :
curl -H "Authorization: Bearer $TOKEN" "https://CLOUD_FUNCTION_URL/simulation-reader/simulations?status=completed&owner=user@example.com&sort_by=status_updated_at"সফল প্রতিক্রিয়া (200 OK) :
- সিমুলেশনগুলির একটি অ্যারে এবং একটি ঐচ্ছিক
next_page_tokenসম্বলিত একটি JSON অবজেক্ট ফেরত দেয়।
{ "simulations": [ { "id": "1234-abcd", "owner": "some@email.com", "status": "completed", "status_updated_at": "2025-12-05T14:50:00.952Z", "received_at": "2025-12-05T14:46:43.106Z", "started_at": "2025-12-05T14:47:05.848Z", "ended_at": "0001-01-01T00:00:00Z", "instance_id": "sim-1234-abcd", "ip": "10.156.15.230", "build_id": "europe-west3-docker.pkg.dev/your-project/simulation/simulation-agent:latest", "instance_type": "n1-standard-8", "file_path": "gs://your-project-simulation_files/path/", "max_simulation_time": 60, "max_report_count": 1 }, { "id": "5678-efgh", "owner": "some@email.com", "status": "completed", "status_updated_at": "2025-11-07T14:49:54.25Z", "received_at": "2025-11-07T14:46:54.959Z", "started_at": "2025-11-07T14:47:13.714Z", "ended_at": "0001-01-01T00:00:00Z", "instance_id": "sim-5678-efgh", "ip": "10.156.15.221", "build_id": "europe-west3-docker.pkg.dev/your-project/simulation/simulation-agent:latest", "instance_type": "n1-standard-8", "file_path": "gs://your-project-simulation_files/path/", "max_simulation_time": 60, "max_report_count": 1 } ], "next_page_token": "M7bydGsAptLncj8SOCb1" }- সিমুলেশনগুলির একটি অ্যারে এবং একটি ঐচ্ছিক
২. একটি নির্দিষ্ট সিমুলেশন নিন
এর আইডি দ্বারা একটি নির্দিষ্ট সিমুলেশনের সম্পূর্ণ বিবরণ পুনরুদ্ধার করে।
শেষবিন্দু :
GET https://CLOUD_FUNCTION_URL/simulation-reader/simulations/[SIMULATION_ID]সফল প্রতিক্রিয়া (200 OK) : অনুরোধ করা সিমুলেশনের বিবরণ সম্বলিত একটি JSON অবজেক্ট ফেরত দেয়।
{ "id": "1234-abcd", "owner": "some@email.com", "status": "completed", "status_updated_at": "2025-12-05T14:50:00.952Z", "received_at": "2025-12-05T14:46:43.106Z", "started_at": "2025-12-05T14:47:05.848Z", "ended_at": "0001-01-01T00:00:00Z", "instance_id": "sim-1234-abcd", "ip": "10.156.15.230", "build_id": "europe-west3-docker.pkg.dev/your-project/simulation/simulation-agent:latest", "instance_type": "n1-standard-8", "file_path": "gs://your-project-simulation_files/path/", "max_simulation_time": 60, "max_report_count": 1 }
৩. সিস্টেম মেট্রিক্স এবং কনফিগারেশন সংগ্রহ করুন
এই এন্ডপয়েন্টগুলো সিমুলেশন অবকাঠামোর বর্তমান লোড এবং কনফিগারেশন সম্পর্কে ধারণা দেয়।
চলমান সংখ্যা জানুন : চলমান সিমুলেশনগুলোর সংখ্যা ফেরত দেয়।
শেষবিন্দু :
GET https://CLOUD_FUNCTION_URL/simulation-reader/simulations/running/countসফল প্রতিক্রিয়া (200 OK) :
{ "count": 0 }
একযোগে সর্বাধিক ভিএম চালানোর সংখ্যা জানুন : কনফিগার করা সর্বোচ্চ সংখ্যক ভিএম ফেরত দেয়।
শেষবিন্দু :
GET https://CLOUD_FUNCTION_URL/simulation-reader/config/max-running-vmsসফল প্রতিক্রিয়া (200 OK) :
{ "max_running_vms": 5 }