Too expensive? can upgrade to Gold package to get discount up to 60% when you fund your
wallet with {{ sharedUpgradePrice }} TFT
diff --git a/packages/playground/src/components/contracts_list/contracts_table.vue b/packages/playground/src/components/contracts_list/contracts_table.vue
index c319801afe..b672823eb0 100644
--- a/packages/playground/src/components/contracts_list/contracts_table.vue
+++ b/packages/playground/src/components/contracts_list/contracts_table.vue
@@ -25,6 +25,7 @@
show-select
@update:page="updatePage"
@update:items-per-page="updateSize"
+ @update:sort-by="updateSortBy"
>
{{ item.details.nodeId }}
@@ -41,7 +42,7 @@
No Data Available
-
+
{{ item.details.farm_id ? item.details.farm_id : "-" }}
@@ -352,7 +353,13 @@ const isNodeInRentContracts = computed(() => {
return false;
});
-const emits = defineEmits(["update:deleted-contracts", "update:unlock-contracts", "update:page", "update:size"]);
+const emits = defineEmits([
+ "update:deleted-contracts",
+ "update:unlock-contracts",
+ "update:page",
+ "update:size",
+ "update:sort",
+]);
function updatePage(page: number) {
emits("update:page", page);
@@ -362,6 +369,10 @@ function updateSize(size: number) {
emits("update:size", size);
}
+function updateSortBy(sort: { key: string; order: "asc" | "desc" }[]) {
+ emits("update:sort", sort);
+}
+
const layout = ref();
const contractLocked = ref();
const deleting = ref(false);
diff --git a/packages/playground/src/components/manage_gateway_dialog.vue b/packages/playground/src/components/manage_gateway_dialog.vue
index 71d133eaf9..7ba2149584 100644
--- a/packages/playground/src/components/manage_gateway_dialog.vue
+++ b/packages/playground/src/components/manage_gateway_dialog.vue
@@ -273,7 +273,9 @@ export default {
loadingGateways.value = true;
updateGrid(grid, { projectName: props.vm.projectName });
- const { gateways: gws, failedToList } = await loadDeploymentGateways(grid!);
+ const { gateways: gws, failedToList } = await loadDeploymentGateways(grid!, {
+ filter: gw => gw.backends.some(bk => bk.includes(ip)),
+ });
gateways.value = gws;
failedToListGws.value = failedToList;
} catch (error) {
diff --git a/packages/playground/src/components/node_selector/TfNodeDetailsCard.vue b/packages/playground/src/components/node_selector/TfNodeDetailsCard.vue
index c48f620fc0..4cfa741e08 100644
--- a/packages/playground/src/components/node_selector/TfNodeDetailsCard.vue
+++ b/packages/playground/src/components/node_selector/TfNodeDetailsCard.vue
@@ -269,7 +269,6 @@ export default {
const profileManager = useProfileManager();
const gridStore = useGrid();
const grid = gridStore.client as unknown as GridClient;
- const node = ref(props.node);
const stakingDiscount = ref();
const loadingStakingDiscount = ref(false);
const lastDeploymentTime = ref(0);
@@ -316,59 +315,59 @@ export default {
}
const dedicated = computed(() => {
- if (isGridNode(node.value)) {
- return node.value?.dedicated;
+ if (isGridNode(props.node)) {
+ return props.node?.dedicated;
}
return null;
});
const serialNumber = computed(() => {
- if (isGridNode(node.value)) {
+ if (isGridNode(props.node)) {
return null;
}
- return node.value?.serialNumber;
+ return props.node?.serialNumber;
});
const num_gpu = computed(() => {
- if (isGridNode(node.value)) {
- return node.value?.num_gpu;
+ if (isGridNode(props.node)) {
+ return props.node?.num_gpu;
}
- return node.value?.hasGPU;
+ return props.node?.hasGPU;
});
const rentable = computed(() => {
- if (isGridNode(node.value)) {
- return node.value?.rentable;
+ if (isGridNode(props.node)) {
+ return props.node?.rentable;
}
return null;
});
const rented = computed(() => {
- if (isGridNode(node.value)) {
- return node.value?.rented;
+ if (isGridNode(props.node)) {
+ return props.node?.rented;
}
return null;
});
const speed = computed(() => {
- if (isGridNode(node.value)) {
- return node.value?.speed;
+ if (isGridNode(props.node)) {
+ return props.node?.speed;
}
return null;
});
const price_usd = computed(() => {
- if (isGridNode(node.value)) {
+ if (isGridNode(props.node)) {
// convert extra fee from mili usd to usd
- const extraFee = node.value?.extraFee / 1000;
- return node.value?.price_usd + extraFee;
+ const extraFee = props.node?.extraFee / 1000;
+ return props.node?.price_usd + extraFee;
}
return null;
});
const dmi = computed(() => {
- if (isGridNode(node.value)) {
- return node.value?.dmi;
+ if (isGridNode(props.node)) {
+ return props.node?.dmi;
}
return null;
});
@@ -427,11 +426,11 @@ export default {
}
function onReserveChange() {
- if (!node.value) {
+ if (!props.node) {
return;
}
- const n = { ...node.value } as NodeInfo | GridNode;
+ const n = { ...props.node } as NodeInfo | GridNode;
const gotReserved = n.rentedByTwinId === 0;
if (gotReserved) {
@@ -442,7 +441,6 @@ export default {
n.rented = false;
}
n.rentable = !n.rented;
-
ctx.emit("update:node", n);
}
@@ -457,7 +455,7 @@ export default {
}
async function getLastDeploymentTime() {
- if (props.node?.id) {
+ if (props.node?.id && props.node?.status == "up") {
try {
const obj = await gridProxyClient.nodes.statsById(props.node.nodeId);
lastDeploymentTime.value = obj.users.last_deployment_timestamp;
diff --git a/packages/playground/src/components/select_vm_image.vue b/packages/playground/src/components/select_vm_image.vue
index 1bfaa5a8a1..83c7b7dbde 100644
--- a/packages/playground/src/components/select_vm_image.vue
+++ b/packages/playground/src/components/select_vm_image.vue
@@ -2,7 +2,7 @@
-
Close
Can't see any of your farms? Try changing your key type in your TFChain Wallet above.
+
+ Click on the row to view farm details.
+
item.name.toLowerCase().includes(search.value!.toLowerCase()) || item.farmId == +search.value!,
- );
- }
-
- const paginated = filteredItems ? filteredItems.slice(start, end) : items;
-
- return paginated;
- }
-
async function getUserFarms() {
try {
const { data, count } = await gridProxyClient.farms.list({
@@ -223,11 +210,11 @@ export default {
twinId,
page: page.value,
size: pageSize.value,
+ nameContains: search.value,
});
- const filteredFarms = filter(data);
- farms.value = filteredFarms as unknown as Farm[];
- farmsCount.value = count || filteredFarms.length;
+ farms.value = data as Farm[];
+ farmsCount.value = count || farms.value.length;
} catch (error) {
console.log(error);
createCustomToast("Failed to get user farms!", ToastType.danger);
diff --git a/packages/playground/src/utils/delete_deployment.ts b/packages/playground/src/utils/delete_deployment.ts
index 49cc2e8ad9..732e40185b 100644
--- a/packages/playground/src/utils/delete_deployment.ts
+++ b/packages/playground/src/utils/delete_deployment.ts
@@ -7,8 +7,10 @@ import { getSubdomain, loadDeploymentGateways } from "./gateway";
import { updateGrid } from "./grid";
export interface DeleteDeploymentOptions {
+ deploymentName?: string;
name: string;
projectName: ProjectName;
+ ip?: string;
k8s?: boolean;
}
@@ -25,7 +27,7 @@ export async function deleteDeployment(grid: GridClient, options: DeleteDeployme
/* For fvm/vm */
if (isVm(options.projectName)) {
- await deleteVmGateways(grid);
+ await deleteVmGateways(grid, options.ip);
}
/* For solutions */
@@ -36,7 +38,15 @@ export async function deleteDeployment(grid: GridClient, options: DeleteDeployme
/* End Delete gateway */
/* Delete deployment */
- return options.k8s ? grid.k8s.delete({ name: options.name }) : grid.machines.delete({ name: options.name });
+ if (options.k8s) {
+ return grid.k8s.delete({ name: options.name });
+ }
+
+ if (options.deploymentName) {
+ return grid.machines.delete_machine({ deployment_name: options.deploymentName, name: options.name });
+ }
+
+ return grid.machines.delete({ name: options.name });
}
export async function deleteDeploymentGateway(grid: GridClient, options: DeleteDeploymentOptions) {
@@ -93,8 +103,10 @@ function isVm(projectName: string) {
return false;
}
-async function deleteVmGateways(grid: GridClient) {
- const { gateways } = await loadDeploymentGateways(grid);
+async function deleteVmGateways(grid: GridClient, ip?: string) {
+ const { gateways } = await loadDeploymentGateways(grid, {
+ filter: ip ? gw => gw.backends.some(bk => bk.includes(ip)) : undefined,
+ });
for (const gateway of gateways) {
try {
if (gateway.type.includes("name")) {
diff --git a/packages/playground/src/utils/gateway.ts b/packages/playground/src/utils/gateway.ts
index c446c3734b..6f7bb5a2a1 100644
--- a/packages/playground/src/utils/gateway.ts
+++ b/packages/playground/src/utils/gateway.ts
@@ -75,7 +75,11 @@ export async function rollbackDeployment(grid: GridClient, name: string) {
}
export type GridGateway = Awaited>[0];
-export async function loadDeploymentGateways(grid: GridClient) {
+interface LoadDeploymentGatewaysOptions {
+ filter?: (gateway: GridGateway) => boolean;
+}
+
+export async function loadDeploymentGateways(grid: GridClient, options?: LoadDeploymentGatewaysOptions) {
const failedToList: string[] = [];
const gws = await grid.gateway.list();
const items = await Promise.all(
@@ -97,5 +101,13 @@ export async function loadDeploymentGateways(grid: GridClient) {
.finally(() => timeout && clearTimeout(timeout));
}),
);
- return { gateways: items.flat().filter(Boolean) as GridGateway[], failedToList };
+
+ const filter = options?.filter ?? (() => true);
+ return {
+ gateways: items
+ .flat()
+ .filter(Boolean)
+ .filter(filter as any) as GridGateway[],
+ failedToList,
+ };
}
diff --git a/packages/playground/src/utils/pricing_calculator.ts b/packages/playground/src/utils/pricing_calculator.ts
index 1f4c70f8ea..0de4f4ef90 100644
--- a/packages/playground/src/utils/pricing_calculator.ts
+++ b/packages/playground/src/utils/pricing_calculator.ts
@@ -29,8 +29,8 @@ export const nuRules = _applyRules([
export const mruRules = _applyRules([
required("Memory is required."),
- min("Minimum allowed Memory size is 1 GB.", 1),
- isInt("Memory must be a valid integer."),
+ min("Minimum allowed Memory size is .5 GB.", 0.5),
+ isNumeric("Memory must be a valid number."),
max("Maximum allowed memory is 1024 GB.", 1024),
]);
diff --git a/packages/playground/src/views/farms.vue b/packages/playground/src/views/farms.vue
index 99c03364e6..49c6f3f2db 100644
--- a/packages/playground/src/views/farms.vue
+++ b/packages/playground/src/views/farms.vue
@@ -1,5 +1,6 @@
+ Click on the row to view farm details.
@@ -88,6 +89,7 @@
{ value: 5, title: '5' },
{ value: 10, title: '10' },
{ value: 15, title: '15' },
+ { value: 50, title: '50' },
]"
:items-per-page="size"
@update:items-per-page="
diff --git a/packages/playground/src/views/nodes.vue b/packages/playground/src/views/nodes.vue
index 1a28ef2271..086f6faa7c 100644
--- a/packages/playground/src/views/nodes.vue
+++ b/packages/playground/src/views/nodes.vue
@@ -41,6 +41,9 @@
+
+
+
+
+ Failed to load Nodes. Please try again!
+
+
+
+
(true);
@@ -532,6 +543,7 @@ export default {
async function loadNodes(retCount = false) {
_nodes.value = [];
loading.value = true;
+ error.value = false;
if (retCount) page.value = 1;
try {
const { count, data } = await requestNodes(
@@ -561,7 +573,8 @@ export default {
numGpu: +filters.value.numGpu || undefined,
rentable: filters.value.rentable && profileManager.profile ? filters.value.rentable : undefined,
availableFor: filters.value.rentable && profileManager.profile ? profileManager.profile.twinId : undefined,
- hasIPv6: filters.value.ipv6,
+ hasIPv6: filters.value.ipv6 ? filters.value.ipv6 : undefined,
+ rentedBy: filters.value.mine && profileManager.profile ? profileManager.profile.twinId : undefined,
},
{ loadFarm: true },
);
@@ -570,6 +583,7 @@ export default {
if (retCount) nodesCount.value = count ?? 0;
} catch (err) {
console.log(err);
+ error.value = true;
} finally {
loading.value = false;
}
@@ -615,6 +629,7 @@ export default {
UnifiedNodeStatus,
size,
page,
+ error,
loadNodes,
};
},
diff --git a/packages/playground/src/weblets/profile_manager.vue b/packages/playground/src/weblets/profile_manager.vue
index 5acece2b69..2c36454672 100644
--- a/packages/playground/src/weblets/profile_manager.vue
+++ b/packages/playground/src/weblets/profile_manager.vue
@@ -153,6 +153,7 @@
}"
:disabled="creatingAccount || activatingAccount || activating"
@click:append="reloadValidation"
+ autocomplete="off"
>
@@ -257,6 +258,7 @@
v-model="email"
v-bind="props"
:disabled="creatingAccount || activatingAccount || activating"
+ autocomplete="off"
/>
@@ -283,6 +285,7 @@
v-model="password"
v-bind="{ ...passwordInputProps, ...validationProps }"
:disabled="creatingAccount || activatingAccount || activating"
+ autocomplete="off"
/>
@@ -305,6 +308,7 @@
...validationProps,
}"
:disabled="creatingAccount || activatingAccount || activating"
+ autocomplete="off"
/>
diff --git a/packages/playground/src/weblets/tf_algorand.vue b/packages/playground/src/weblets/tf_algorand.vue
index 3f0cf97b2f..50440698b0 100644
--- a/packages/playground/src/weblets/tf_algorand.vue
+++ b/packages/playground/src/weblets/tf_algorand.vue
@@ -28,9 +28,7 @@
-
-
-
+
;
const memory = ref() as Ref;
@@ -173,7 +172,7 @@ async function deploy() {
rootFilesystemSize: rootFilesystemSize.value,
publicIpv4: ipv4.value,
mycelium: mycelium.value,
- planetary: true,
+ planetary: planetary.value,
nodeId: selectionDetails.value!.node!.nodeId,
rentedBy: dedicated.value ? grid!.twinId : undefined,
certified: certified.value,
diff --git a/packages/playground/src/weblets/tf_casperlabs.vue b/packages/playground/src/weblets/tf_casperlabs.vue
index ad4d996449..bedba6134c 100644
--- a/packages/playground/src/weblets/tf_casperlabs.vue
+++ b/packages/playground/src/weblets/tf_casperlabs.vue
@@ -37,7 +37,7 @@
:large="{ cpu: 8, memory: 32, disk: 1000 }"
/>
-
+
@@ -98,6 +98,7 @@ const dedicated = ref(false);
const certified = ref(false);
const ipv4 = ref(false);
const mycelium = ref(true);
+const planetary = ref(false);
const rootFilesystemSize = computed(() => rootFs(solution.value?.cpu ?? 0, solution.value?.memory ?? 0));
const selectionDetails = ref();
const selectedSSHKeys = ref("");
@@ -149,6 +150,7 @@ async function deploy() {
entryPoint: flist.entryPoint,
publicIpv4: ipv4.value,
mycelium: mycelium.value,
+ planetary: planetary.value,
envs: [
{ key: "SSH_KEY", value: selectedSSHKeys.value },
{ key: "CASPERLABS_HOSTNAME", value: domain },
diff --git a/packages/playground/src/weblets/tf_contracts_list.vue b/packages/playground/src/weblets/tf_contracts_list.vue
index cf6c5193b5..93bed0b70a 100644
--- a/packages/playground/src/weblets/tf_contracts_list.vue
+++ b/packages/playground/src/weblets/tf_contracts_list.vue
@@ -166,6 +166,11 @@
loadContracts(table.type);
}
"
+ @update:sort="
+ sort => {
+ loadContracts(table.type, { sort });
+ }
+ "
/>
@@ -252,6 +257,7 @@ async function _normalizeContracts(
async function loadContractsByType(
contractType: ContractType.Node | ContractType.Name | ContractType.Rent,
contractsRef: Ref,
+ options?: { sort: { key: string; order: "asc" | "desc" }[] },
) {
const table = contractsTables.find(table => table.type === contractType);
if (!table) {
@@ -272,6 +278,11 @@ async function loadContractsByType(
table.count.value = response.count ?? 0;
const normalizedContracts = await _normalizeContracts(response.data, contractType);
+
+ if (options && options.sort.length) {
+ contractsRef.value = sortContracts(normalizedContracts, options.sort);
+ }
+
contractsRef.value = normalizedContracts;
} catch (error: any) {
loadingErrorMessage.value = `Error while listing ${contractType} contracts: ${error.message}`;
@@ -281,7 +292,22 @@ async function loadContractsByType(
}
}
-async function loadContracts(type?: ContractType) {
+function sortContracts(
+ contracts: NormalizedContract[],
+ sort: { key: string; order: "asc" | "desc" }[],
+): NormalizedContract[] {
+ const sortKey = sort[0].key;
+ const sortOrder = sort[0].order;
+
+ contracts = contracts.sort((a, b) => {
+ const aValue = Reflect.get(a, sortKey) ?? Reflect.get(a.details, sortKey);
+ const bValue = Reflect.get(b, sortKey) ?? Reflect.get(b.details, sortKey);
+ return sortOrder === "desc" ? bValue - aValue : aValue - bValue;
+ });
+ return contracts;
+}
+
+async function loadContracts(type?: ContractType, options?: { sort: { key: string; order: "asc" | "desc" }[] }) {
totalCost.value = undefined;
totalCostUSD.value = undefined;
loadingErrorMessage.value = undefined;
@@ -294,20 +320,20 @@ async function loadContracts(type?: ContractType) {
if (type) {
switch (type) {
case ContractType.Name:
- await loadContractsByType(ContractType.Name, nameContracts);
+ await loadContractsByType(ContractType.Name, nameContracts, options);
break;
case ContractType.Node:
- await loadContractsByType(ContractType.Node, nodeContracts);
+ await loadContractsByType(ContractType.Node, nodeContracts, options);
break;
case ContractType.Rent:
- await loadContractsByType(ContractType.Rent, rentContracts);
+ await loadContractsByType(ContractType.Rent, rentContracts, options);
break;
}
} else {
await Promise.all([
- loadContractsByType(ContractType.Name, nameContracts),
- loadContractsByType(ContractType.Node, nodeContracts),
- loadContractsByType(ContractType.Rent, rentContracts),
+ loadContractsByType(ContractType.Name, nameContracts, options),
+ loadContractsByType(ContractType.Node, nodeContracts, options),
+ loadContractsByType(ContractType.Rent, rentContracts, options),
]);
}
@@ -433,7 +459,7 @@ const nodeTableHeaders: VDataTableHeader = [
},
{ title: "Type", key: "deploymentType", sortable: false },
{ title: "Expiration", key: "expiration" },
- { title: "Farm ID", key: "farmId" },
+ { title: "Farm ID", key: "farm_id" },
{
title: "Node",
key: "node",
@@ -448,14 +474,14 @@ const nodeTableHeaders: VDataTableHeader = [
const nameTableHeaders: VDataTableHeader = [
...baseTableHeaders,
- { title: "Solution Name", key: "solutionName" },
+ { title: "Solution Name", key: "solutionName", sortable: false },
{ title: "Expiration", key: "expiration" },
{ title: "Details", key: "actions", sortable: false },
];
const RentTableHeaders: VDataTableHeader = [
...baseTableHeaders,
- { title: "Farm ID", key: "farmId" },
+ { title: "Farm ID", key: "farm_id" },
{
title: "Node",
key: "node",
diff --git a/packages/playground/src/weblets/tf_deployment_list.vue b/packages/playground/src/weblets/tf_deployment_list.vue
index 1bb36d1c1f..b570629844 100644
--- a/packages/playground/src/weblets/tf_deployment_list.vue
+++ b/packages/playground/src/weblets/tf_deployment_list.vue
@@ -26,9 +26,9 @@
@click="openDialog(tabs[activeTab].value, item)"
/>
-
+
-
+
@@ -42,10 +42,10 @@
icon="mdi-cog"
tooltip="Manage Domains"
:disabled="item.fromAnotherClient"
- @click="dialog = item.deploymentName"
+ @click="dialog = item.name"
/>
-
+
@@ -60,10 +60,10 @@
icon="mdi-view-dashboard"
:href="'http://captain.' + item.env.CAPROVER_ROOT_DOMAIN"
/>
-
+
Delete the following deployments?
-
- {{ item.deploymentName }}
+
+ {{ item.name }}
@@ -421,17 +421,19 @@ async function onDelete(k8s = false) {
for (const item of selectedItems.value) {
try {
await deleteDeployment(updateGrid(grid!, { projectName: item.projectName }), {
- name: item.deploymentName,
+ deploymentName: item.deploymentName,
+ name: k8s ? item.deploymentName : item.name,
projectName: item.projectName,
+ ip: item.interfaces?.[0]?.ip,
k8s,
});
} catch (e: any) {
- createCustomToast(`Failed to delete deployment with name: ${item.deploymentName}`, ToastType.danger);
+ createCustomToast(`Failed to delete deployment with name: ${item.name}`, ToastType.danger);
console.log("Error while deleting deployment", e.message);
continue;
}
- table.value?.loadDeployments();
}
+ table.value?.loadDeployments();
} catch (e) {
createCustomToast((e as Error).message, ToastType.danger);
} finally {
diff --git a/packages/playground/src/weblets/tf_discourse.vue b/packages/playground/src/weblets/tf_discourse.vue
index 731433179f..444d8899ca 100644
--- a/packages/playground/src/weblets/tf_discourse.vue
+++ b/packages/playground/src/weblets/tf_discourse.vue
@@ -58,7 +58,7 @@
:medium="{ cpu: 2, memory: 4, disk: 50 }"
:large="{ cpu: 4, memory: 16, disk: 100 }"
/>
-
+
@@ -124,6 +124,7 @@ const email = ref(profileManager.profile?.email || "");
const solution = ref() as Ref;
const ipv4 = ref(false);
const mycelium = ref(true);
+const planetary = ref(true);
const smtp = ref(createSMTPServer());
const dedicated = ref(false);
const certified = ref(false);
@@ -181,7 +182,7 @@ async function deploy() {
entryPoint: flist.entryPoint,
rootFilesystemSize: rootFilesystemSize.value,
publicIpv4: ipv4.value,
- planetary: true,
+ planetary: planetary.value,
mycelium: mycelium.value,
envs: [
{ key: "SSH_KEY", value: selectedSSHKeys.value },
diff --git a/packages/playground/src/weblets/tf_funkwhale.vue b/packages/playground/src/weblets/tf_funkwhale.vue
index 8d6d62120d..f27fbd36bf 100644
--- a/packages/playground/src/weblets/tf_funkwhale.vue
+++ b/packages/playground/src/weblets/tf_funkwhale.vue
@@ -89,7 +89,7 @@
:small="{ cpu: 1, memory: 2, disk: 50 }"
:medium="{ cpu: 2, memory: 4, disk: 100 }"
/>
-
+
@@ -153,6 +153,7 @@ const dedicated = ref(false);
const certified = ref(false);
const ipv4 = ref(false);
const mycelium = ref(true);
+const planetary = ref(false);
const selectionDetails = ref();
const gridStore = useGrid();
const grid = gridStore.client as GridClient;
@@ -207,6 +208,7 @@ async function deploy() {
entryPoint: flist.entryPoint,
publicIpv4: ipv4.value,
mycelium: mycelium.value,
+ planetary: planetary.value,
envs: [
{ key: "SSH_KEY", value: selectedSSHKeys.value },
{ key: "FUNKWHALE_HOSTNAME", value: domain },
diff --git a/packages/playground/src/weblets/tf_mattermost.vue b/packages/playground/src/weblets/tf_mattermost.vue
index 0a8a805d7d..0fb205e970 100644
--- a/packages/playground/src/weblets/tf_mattermost.vue
+++ b/packages/playground/src/weblets/tf_mattermost.vue
@@ -42,7 +42,7 @@
:medium="{ cpu: 2, memory: 4, disk: 50 }"
:large="{ cpu: 4, memory: 16, disk: 100 }"
/>
-
+
@@ -106,6 +106,7 @@ const flist: Flist = {
const dedicated = ref(false);
const certified = ref(false);
const ipv4 = ref(false);
+const planetary = ref(true);
const smtp = ref(createSMTPServer());
const rootFilesystemSize = computed(() => rootFs(solution.value?.cpu ?? 0, solution.value?.memory ?? 0));
const selectionDetails = ref();
@@ -164,7 +165,7 @@ async function deploy() {
entryPoint: flist.entryPoint,
rootFilesystemSize: rootFilesystemSize.value,
publicIpv4: ipv4.value,
- planetary: true,
+ planetary: planetary.value,
mycelium: mycelium.value,
envs: [
{ key: "SSH_KEY", value: selectedSSHKeys.value },
diff --git a/packages/playground/src/weblets/tf_nextcloud.vue b/packages/playground/src/weblets/tf_nextcloud.vue
index ac56cd57c1..fe1d29f655 100644
--- a/packages/playground/src/weblets/tf_nextcloud.vue
+++ b/packages/playground/src/weblets/tf_nextcloud.vue
@@ -36,7 +36,7 @@
:large="{ cpu: 4, memory: 16, disk: 1000 }"
v-model="solution"
/>
-
+
@@ -97,6 +97,7 @@ const dedicated = ref(false);
const certified = ref(false);
const ipv4 = ref(false);
const mycelium = ref(true);
+const planetary = ref(false);
const rootFilesystemSize = computed(() => rootFs(solution.value?.cpu ?? 0, solution.value?.memory ?? 0));
const selectionDetails = ref();
const selectedSSHKeys = ref("");
@@ -158,6 +159,7 @@ async function deploy() {
flist: flist.value,
entryPoint: flist.entryPoint,
publicIpv4: ipv4.value,
+ planetary: planetary.value,
mycelium: mycelium.value,
envs: [
{ key: "SSH_KEY", value: selectedSSHKeys.value },
diff --git a/packages/playground/src/weblets/tf_peertube.vue b/packages/playground/src/weblets/tf_peertube.vue
index d891978123..755c91abcc 100644
--- a/packages/playground/src/weblets/tf_peertube.vue
+++ b/packages/playground/src/weblets/tf_peertube.vue
@@ -63,7 +63,7 @@
-
+
@@ -126,6 +126,7 @@ const ipv4 = ref(false);
const rootFilesystemSize = computed(() => rootFs(solution.value?.cpu ?? 0, solution.value?.memory ?? 0));
const selectionDetails = ref();
const mycelium = ref(true);
+const planetary = ref(true);
const selectedSSHKeys = ref("");
const gridStore = useGrid();
const grid = gridStore.client as GridClient;
@@ -177,7 +178,7 @@ async function deploy() {
flist: flist.value,
entryPoint: flist.entryPoint,
publicIpv4: ipv4.value,
- planetary: true,
+ planetary: planetary.value,
mycelium: mycelium.value,
envs: [
{ key: "SSH_KEY", value: selectedSSHKeys.value },
diff --git a/packages/playground/src/weblets/tf_staticwebsite.vue b/packages/playground/src/weblets/tf_staticwebsite.vue
index 2430344b85..5e9afa0b9d 100644
--- a/packages/playground/src/weblets/tf_staticwebsite.vue
+++ b/packages/playground/src/weblets/tf_staticwebsite.vue
@@ -62,7 +62,7 @@
:medium="{ cpu: 2, memory: 4, disk: 100 }"
/>
-
+
;
const flist: Flist = {
// Should be upgraded to an oficial Flist
@@ -193,6 +194,7 @@ async function deploy() {
entryPoint: flist.entryPoint,
publicIpv4: ipv4.value,
mycelium: mycelium.value,
+ planetary: planetary.value,
envs: [
{ key: "SSH_KEY", value: selectedSSHKeys.value },
{ key: "GITHUB_URL", value: gitUrl.value },
diff --git a/packages/playground/src/weblets/tf_subsquid.vue b/packages/playground/src/weblets/tf_subsquid.vue
index 5fc458e08a..d332b63104 100644
--- a/packages/playground/src/weblets/tf_subsquid.vue
+++ b/packages/playground/src/weblets/tf_subsquid.vue
@@ -51,7 +51,7 @@
:medium="{ cpu: 2, memory: 4, disk: 100 }"
/>
-
+
@@ -104,6 +104,7 @@ const profileManager = useProfileManager();
const name = ref(generateName({ prefix: "ss" }));
const endpoint = ref("");
const ipv4 = ref(false);
+const planetary = ref(false);
const mycelium = ref(true);
const solution = ref() as Ref;
const flist: Flist = {
@@ -168,6 +169,7 @@ async function deploy() {
entryPoint: flist.entryPoint,
publicIpv4: ipv4.value,
mycelium: mycelium.value,
+ planetary: planetary.value,
envs: [
{ key: "SSH_KEY", value: selectedSSHKeys.value },
{ key: "CHAIN_ENDPOINT", value: endpoint.value },
diff --git a/packages/playground/src/weblets/tf_taiga.vue b/packages/playground/src/weblets/tf_taiga.vue
index e85d812a75..f3821870e5 100644
--- a/packages/playground/src/weblets/tf_taiga.vue
+++ b/packages/playground/src/weblets/tf_taiga.vue
@@ -90,7 +90,7 @@
:small="{ cpu: 2, memory: 4, disk: 100 }"
:medium="{ cpu: 4, memory: 8, disk: 150 }"
/>
-
+
@@ -161,6 +161,7 @@ const dedicated = ref(false);
const certified = ref(false);
const ipv4 = ref(false);
const mycelium = ref(true);
+const planetary = ref(true);
const smtp = ref(createSMTPServer());
const rootFilesystemSize = computed(() => rootFs(solution.value?.cpu ?? 0, solution.value?.memory ?? 0));
const selectionDetails = ref();
@@ -218,7 +219,7 @@ async function deploy() {
entryPoint: flist.entryPoint,
rootFilesystemSize: rootFilesystemSize.value,
publicIpv4: ipv4.value,
- planetary: true,
+ planetary: planetary.value,
mycelium: mycelium.value,
envs: [
{ key: "SSH_KEY", value: selectedSSHKeys.value },
diff --git a/packages/playground/src/weblets/tf_wordpress.vue b/packages/playground/src/weblets/tf_wordpress.vue
index 8d2ea73c51..6d6e46626f 100644
--- a/packages/playground/src/weblets/tf_wordpress.vue
+++ b/packages/playground/src/weblets/tf_wordpress.vue
@@ -90,7 +90,7 @@
:large="{ cpu: 4, memory: 16, disk: 100 }"
/>
-
+
@@ -154,6 +154,7 @@ const dedicated = ref(false);
const certified = ref(false);
const ipv4 = ref(false);
const mycelium = ref(true);
+const planetary = ref(false);
const rootFilesystemSize = computed(() => rootFs(solution.value?.cpu ?? 0, solution.value?.memory ?? 0));
const selectionDetails = ref();
const selectedSSHKeys = ref("");
@@ -206,6 +207,7 @@ async function deploy() {
entryPoint: flist.entryPoint,
publicIpv4: ipv4.value,
mycelium: mycelium.value,
+ planetary: planetary.value,
envs: [
{ key: "SSH_KEY", value: selectedSSHKeys.value },
{ key: "MYSQL_USER", value: username.value },
diff --git a/packages/rmb_direct_client/package.json b/packages/rmb_direct_client/package.json
index 226f508af0..dacb94ebc4 100644
--- a/packages/rmb_direct_client/package.json
+++ b/packages/rmb_direct_client/package.json
@@ -1,6 +1,6 @@
{
"name": "@threefold/rmb_direct_client",
- "version": "2.5.0-rc1",
+ "version": "2.5.0-rc2",
"repository": {
"type": "git",
"url": "https://github.com/threefoldtech/tfgrid-sdk-ts.git"
@@ -23,8 +23,8 @@
"dependencies": {
"@noble/secp256k1": "^1.7.1",
"@polkadot/api": "^8.9.1",
- "@threefold/tfchain_client": "^2.5.0-rc1",
- "@threefold/types": "^2.5.0-rc1",
+ "@threefold/tfchain_client": "^2.5.0-rc2",
+ "@threefold/types": "^2.5.0-rc2",
"base64url": "^3.0.1",
"bip39": "^3.1.0",
"buffer": "^6.0.3",
diff --git a/packages/rmb_peer_client/package.json b/packages/rmb_peer_client/package.json
index 7c78518d1b..dcd04eb8f6 100644
--- a/packages/rmb_peer_client/package.json
+++ b/packages/rmb_peer_client/package.json
@@ -1,7 +1,7 @@
{
"name": "@threefold/rmb_peer_client",
"author": "Ahmed Hanafy",
- "version": "2.5.0-rc1",
+ "version": "2.5.0-rc2",
"license": "ISC",
"homepage": "https://github.com/threefoldtech/tfgrid-sdk-ts/blob/development/packages/rmb_peer_client/README.md",
"repository": {
diff --git a/packages/rmb_peer_server/package.json b/packages/rmb_peer_server/package.json
index 148c2de4a6..de45516077 100644
--- a/packages/rmb_peer_server/package.json
+++ b/packages/rmb_peer_server/package.json
@@ -1,7 +1,7 @@
{
"name": "@threefold/rmb_peer_server",
"author": "Ahmed Hanafy",
- "version": "2.5.0-rc1",
+ "version": "2.5.0-rc2",
"license": "ISC",
"homepage": "https://github.com/threefoldtech/tfgrid-sdk-ts/blob/development/packages/rmb_peer_server/README.md",
"repository": {
diff --git a/packages/stats/chart/Chart.yaml b/packages/stats/chart/Chart.yaml
index 6f68a52137..b6ad77e761 100644
--- a/packages/stats/chart/Chart.yaml
+++ b/packages/stats/chart/Chart.yaml
@@ -21,4 +21,4 @@ version: 1.0.0
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
-appVersion: "v2.5.0-rc1"
+appVersion: "v2.5.0-rc2"
diff --git a/packages/stats/chart/values.yaml b/packages/stats/chart/values.yaml
index 35d76abba1..db6ef75fe6 100644
--- a/packages/stats/chart/values.yaml
+++ b/packages/stats/chart/values.yaml
@@ -4,7 +4,7 @@ image:
repository: ghcr.io/threefoldtech/stats
pullPolicy: Always
# Overrides the image tag whose default is the chart appVersion.
- tag: "2.5.0-rc1"
+ tag: "2.5.0-rc2"
imagePullSecrets: []
nameOverride: ""
diff --git a/packages/stats/package.json b/packages/stats/package.json
index 5279dabe78..61757713b6 100644
--- a/packages/stats/package.json
+++ b/packages/stats/package.json
@@ -1,6 +1,6 @@
{
"name": "@threefold/stats",
- "version": "2.5.0-rc1",
+ "version": "2.5.0-rc2",
"private": true,
"scripts": {
"dev": "vite",
@@ -11,7 +11,7 @@
"type-check": "vue-tsc --noEmit -p tsconfig.vitest.json --composite false"
},
"dependencies": {
- "@threefold/gridproxy_client": "^2.5.0-rc1",
+ "@threefold/gridproxy_client": "^2.5.0-rc2",
"vue": "^3.3.4",
"vuetify": "^3.3.21"
},
diff --git a/packages/tfchain_client/package.json b/packages/tfchain_client/package.json
index 9f5d1ab556..4113416d2b 100644
--- a/packages/tfchain_client/package.json
+++ b/packages/tfchain_client/package.json
@@ -1,6 +1,6 @@
{
"name": "@threefold/tfchain_client",
- "version": "2.5.0-rc1",
+ "version": "2.5.0-rc2",
"description": "A client for TF chain",
"private": false,
"publishConfig": {
@@ -46,7 +46,7 @@
},
"dependencies": {
"@polkadot/api": "^8.9.1",
- "@threefold/types": "^2.5.0-rc1",
+ "@threefold/types": "^2.5.0-rc2",
"await-lock": "^2.2.2",
"bip39": "^3.1.0",
"moment": "^2.30.1"
diff --git a/packages/types/package.json b/packages/types/package.json
index c2c069555e..952b7fd437 100644
--- a/packages/types/package.json
+++ b/packages/types/package.json
@@ -1,6 +1,6 @@
{
"name": "@threefold/types",
- "version": "2.5.0-rc1",
+ "version": "2.5.0-rc2",
"main": "dist/node/index.js",
"types": "dist/es6/index.d.ts",
"scripts": {