Commit 5da4a5f7 authored by Ahmad's avatar Ahmad

dsdsd

parent c746fcb8
Pipeline #233 canceled with stages
...@@ -24,22 +24,7 @@ function readDigitalOceanToken() { ...@@ -24,22 +24,7 @@ function readDigitalOceanToken() {
}); });
} }
// Step 2: Fetch US regions // Step 2: Generate server name
async function fetchUSRegions(token) {
const res = await axios.get('https://api.digitalocean.com/v2/regions', {
headers: { Authorization: `Bearer ${token}` },
});
const allRegions = res.data.regions;
const usRegions = allRegions.filter(
(r) => r.available && /^(nyc|sfo|chi|sea|dc|atl)/i.test(r.slug)
);
if (usRegions.length === 0) throw new Error('No available US regions found.');
return usRegions.map((r) => r.slug);
}
// Step 3: Generate server name
function generateRandomName() { function generateRandomName() {
const randomLetters = [...Array(5)].map(() => const randomLetters = [...Array(5)].map(() =>
String.fromCharCode(97 + Math.floor(Math.random() * 26)) String.fromCharCode(97 + Math.floor(Math.random() * 26))
...@@ -47,7 +32,7 @@ function generateRandomName() { ...@@ -47,7 +32,7 @@ function generateRandomName() {
return `mas${randomLetters}`; return `mas${randomLetters}`;
} }
// Step 4: Prepare user data // Step 3: Prepare user data
function getUserData() { function getUserData() {
return `#cloud-config return `#cloud-config
runcmd: runcmd:
...@@ -55,8 +40,31 @@ runcmd: ...@@ -55,8 +40,31 @@ runcmd:
- sudo docker run --name node --restart=always -p 3000:3000 -d nematiprog/azzzlll`; - sudo docker run --name node --restart=always -p 3000:3000 -d nematiprog/azzzlll`;
} }
// Step 5: Create Droplet with full logs // Step 4: Check if any droplet with "mas" prefix exists
async function createDroplet(token, name, region, userData) { async function masDropletExists(token) {
try {
const response = await axios.get('https://api.digitalocean.com/v2/droplets', {
headers: { Authorization: `Bearer ${token}` },
});
const droplets = response.data.droplets || [];
const found = droplets.find(d => d.name && d.name.startsWith('mas'));
if (found) {
console.log(`⚠️ A droplet named "${found.name}" already exists. Skipping creation.`);
return true;
}
return false;
} catch (err) {
throw new Error('Failed to fetch existing droplets: ' + err.message);
}
}
// Step 5: Create Droplet
async function createDroplet(token, name, userData) {
const region = 'nyc1';
const serverType = 's-4vcpu-8gb'; const serverType = 's-4vcpu-8gb';
const payload = { const payload = {
...@@ -69,12 +77,8 @@ async function createDroplet(token, name, region, userData) { ...@@ -69,12 +77,8 @@ async function createDroplet(token, name, region, userData) {
user_data: userData, user_data: userData,
monitoring: false, monitoring: false,
private_networking: false private_networking: false
// intentionally removed: volumes, tags
}; };
console.log('\n📦 Payload being sent:');
console.log(JSON.stringify(payload, null, 2));
try { try {
const response = await axios.post('https://api.digitalocean.com/v2/droplets', payload, { const response = await axios.post('https://api.digitalocean.com/v2/droplets', payload, {
headers: { headers: {
...@@ -108,17 +112,14 @@ async function main() { ...@@ -108,17 +112,14 @@ async function main() {
const token = await readDigitalOceanToken(); const token = await readDigitalOceanToken();
console.log('✅ Token loaded'); console.log('✅ Token loaded');
const regions = await fetchUSRegions(token); const exists = await masDropletExists(token);
console.log('🌍 Available US regions:', regions); if (exists) return;
const selectedRegion = regions[Math.floor(Math.random() * regions.length)];
console.log('🎯 Selected region:', selectedRegion);
const name = generateRandomName(); const name = generateRandomName();
const userData = getUserData(); const userData = getUserData();
console.log('🚀 Creating Droplet with name:', name); console.log('🚀 Creating Droplet with name:', name);
await createDroplet(token, name, selectedRegion, userData); await createDroplet(token, name, userData);
} catch (err) { } catch (err) {
console.error('\n⛔️ Process aborted.'); console.error('\n⛔️ Process aborted.');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment