summaryrefslogtreecommitdiff
path: root/opendc-web/opendc-web-ui/src/redux
diff options
context:
space:
mode:
Diffstat (limited to 'opendc-web/opendc-web-ui/src/redux')
-rw-r--r--opendc-web/opendc-web-ui/src/redux/actions/prefabs.js3
-rw-r--r--opendc-web/opendc-web-ui/src/redux/actions/topology/building.js11
-rw-r--r--opendc-web/opendc-web-ui/src/redux/actions/topology/machine.js10
-rw-r--r--opendc-web/opendc-web-ui/src/redux/actions/topology/rack.js9
-rw-r--r--opendc-web/opendc-web-ui/src/redux/actions/topology/room.js6
-rw-r--r--opendc-web/opendc-web-ui/src/redux/sagas/prefabs.js7
-rw-r--r--opendc-web/opendc-web-ui/src/redux/sagas/topology.js67
7 files changed, 51 insertions, 62 deletions
diff --git a/opendc-web/opendc-web-ui/src/redux/actions/prefabs.js b/opendc-web/opendc-web-ui/src/redux/actions/prefabs.js
index c112feed..0ef7795f 100644
--- a/opendc-web/opendc-web-ui/src/redux/actions/prefabs.js
+++ b/opendc-web/opendc-web-ui/src/redux/actions/prefabs.js
@@ -3,10 +3,11 @@ export const DELETE_PREFAB = 'DELETE_PREFAB'
export const DELETE_PREFAB_SUCCEEDED = 'DELETE_PREFAB_SUCCEEDED'
export const OPEN_PREFAB_SUCCEEDED = 'OPEN_PREFAB_SUCCEEDED'
-export function addPrefab(name) {
+export function addPrefab(name, tileId) {
return {
type: ADD_PREFAB,
name,
+ tileId,
}
}
diff --git a/opendc-web/opendc-web-ui/src/redux/actions/topology/building.js b/opendc-web/opendc-web-ui/src/redux/actions/topology/building.js
index f1a7d569..49425318 100644
--- a/opendc-web/opendc-web-ui/src/redux/actions/topology/building.js
+++ b/opendc-web/opendc-web-ui/src/redux/actions/topology/building.js
@@ -55,13 +55,10 @@ export function cancelNewRoomConstructionSucceeded() {
}
}
-export function startRoomEdit() {
- return (dispatch, getState) => {
- const { interactionLevel } = getState()
- dispatch({
- type: START_ROOM_EDIT,
- roomId: interactionLevel.roomId,
- })
+export function startRoomEdit(roomId) {
+ return {
+ type: START_ROOM_EDIT,
+ roomId: roomId,
}
}
diff --git a/opendc-web/opendc-web-ui/src/redux/actions/topology/machine.js b/opendc-web/opendc-web-ui/src/redux/actions/topology/machine.js
index 17ccce5d..170b7648 100644
--- a/opendc-web/opendc-web-ui/src/redux/actions/topology/machine.js
+++ b/opendc-web/opendc-web-ui/src/redux/actions/topology/machine.js
@@ -2,23 +2,27 @@ export const DELETE_MACHINE = 'DELETE_MACHINE'
export const ADD_UNIT = 'ADD_UNIT'
export const DELETE_UNIT = 'DELETE_UNIT'
-export function deleteMachine() {
+export function deleteMachine(rackId, position) {
return {
type: DELETE_MACHINE,
+ rackId,
+ position,
}
}
-export function addUnit(unitType, id) {
+export function addUnit(machineId, unitType, id) {
return {
type: ADD_UNIT,
+ machineId,
unitType,
id,
}
}
-export function deleteUnit(unitType, index) {
+export function deleteUnit(machineId, unitType, index) {
return {
type: DELETE_UNIT,
+ machineId,
unitType,
index,
}
diff --git a/opendc-web/opendc-web-ui/src/redux/actions/topology/rack.js b/opendc-web/opendc-web-ui/src/redux/actions/topology/rack.js
index b117402e..228e3ae9 100644
--- a/opendc-web/opendc-web-ui/src/redux/actions/topology/rack.js
+++ b/opendc-web/opendc-web-ui/src/redux/actions/topology/rack.js
@@ -2,22 +2,25 @@ export const EDIT_RACK_NAME = 'EDIT_RACK_NAME'
export const DELETE_RACK = 'DELETE_RACK'
export const ADD_MACHINE = 'ADD_MACHINE'
-export function editRackName(name) {
+export function editRackName(rackId, name) {
return {
type: EDIT_RACK_NAME,
name,
+ rackId,
}
}
-export function deleteRack() {
+export function deleteRack(tileId) {
return {
type: DELETE_RACK,
+ tileId,
}
}
-export function addMachine(position) {
+export function addMachine(rackId, position) {
return {
type: ADD_MACHINE,
position,
+ rackId,
}
}
diff --git a/opendc-web/opendc-web-ui/src/redux/actions/topology/room.js b/opendc-web/opendc-web-ui/src/redux/actions/topology/room.js
index 80ef7c5e..e584af89 100644
--- a/opendc-web/opendc-web-ui/src/redux/actions/topology/room.js
+++ b/opendc-web/opendc-web-ui/src/redux/actions/topology/room.js
@@ -6,10 +6,11 @@ export const START_RACK_CONSTRUCTION = 'START_RACK_CONSTRUCTION'
export const STOP_RACK_CONSTRUCTION = 'STOP_RACK_CONSTRUCTION'
export const ADD_RACK_TO_TILE = 'ADD_RACK_TO_TILE'
-export function editRoomName(name) {
+export function editRoomName(roomId, name) {
return {
type: EDIT_ROOM_NAME,
name,
+ roomId,
}
}
@@ -41,8 +42,9 @@ export function addRackToTile(positionX, positionY) {
}
}
-export function deleteRoom() {
+export function deleteRoom(roomId) {
return {
type: DELETE_ROOM,
+ roomId,
}
}
diff --git a/opendc-web/opendc-web-ui/src/redux/sagas/prefabs.js b/opendc-web/opendc-web-ui/src/redux/sagas/prefabs.js
index 91b03bf6..f717d878 100644
--- a/opendc-web/opendc-web-ui/src/redux/sagas/prefabs.js
+++ b/opendc-web/opendc-web-ui/src/redux/sagas/prefabs.js
@@ -4,14 +4,13 @@ import { addPrefab } from '../../api/prefabs'
import { Rack } from '../../util/topology-schema'
import { denormalize } from 'normalizr'
-export function* onAddPrefab(action) {
+export function* onAddPrefab({ name, tileId }) {
try {
- const interactionLevel = yield select((state) => state.interactionLevel)
const objects = yield select((state) => state.objects)
- const rack = objects.rack[objects.tile[interactionLevel.tileId].rack]
+ const rack = objects.rack[objects.tile[tileId].rack]
const prefabRack = denormalize(rack, Rack, objects)
const auth = yield getContext('auth')
- const prefab = yield call(() => addPrefab(auth, { name: action.name, rack: prefabRack }))
+ const prefab = yield call(() => addPrefab(auth, { name, rack: prefabRack }))
yield put(addToStore('prefab', prefab))
} catch (error) {
console.error(error)
diff --git a/opendc-web/opendc-web-ui/src/redux/sagas/topology.js b/opendc-web/opendc-web-ui/src/redux/sagas/topology.js
index 333c1485..f3742b78 100644
--- a/opendc-web/opendc-web-ui/src/redux/sagas/topology.js
+++ b/opendc-web/opendc-web-ui/src/redux/sagas/topology.js
@@ -37,10 +37,8 @@ export function* fetchAndStoreAllTopologiesOfProject(projectId, setTopology = fa
}
}
-export function* onAddTopology(action) {
+export function* onAddTopology({ projectId, duplicateId, name }) {
try {
- const { projectId, duplicateId, name } = action
-
let topologyToBeCreated
if (duplicateId) {
topologyToBeCreated = yield denormalizeTopology(duplicateId)
@@ -119,21 +117,19 @@ export function* onDeleteTile(action) {
}
}
-export function* onEditRoomName(action) {
+export function* onEditRoomName({ roomId, name }) {
try {
const topologyId = yield select((state) => state.currentTopologyId)
- const roomId = yield select((state) => state.interactionLevel.roomId)
- yield put(addPropToStoreObject('room', roomId, { name: action.name }))
+ yield put(addPropToStoreObject('room', roomId, { name }))
yield updateTopologyOnServer(topologyId)
} catch (error) {
console.error(error)
}
}
-export function* onDeleteRoom() {
+export function* onDeleteRoom({ roomId }) {
try {
const topologyId = yield select((state) => state.currentTopologyId)
- const roomId = yield select((state) => state.interactionLevel.roomId)
yield put(goDownOneInteractionLevel())
yield put(removeIdFromStoreObjectListProp('topology', topologyId, 'rooms', roomId))
yield updateTopologyOnServer(topologyId)
@@ -142,21 +138,19 @@ export function* onDeleteRoom() {
}
}
-export function* onEditRackName(action) {
+export function* onEditRackName({ rackId, name }) {
try {
const topologyId = yield select((state) => state.currentTopologyId)
- const rackId = yield select((state) => state.objects.tile[state.interactionLevel.tileId].rack)
- yield put(addPropToStoreObject('rack', rackId, { name: action.name }))
+ yield put(addPropToStoreObject('rack', rackId, { name }))
yield updateTopologyOnServer(topologyId)
} catch (error) {
console.error(error)
}
}
-export function* onDeleteRack() {
+export function* onDeleteRack({ tileId }) {
try {
const topologyId = yield select((state) => state.currentTopologyId)
- const tileId = yield select((state) => state.interactionLevel.tileId)
yield put(goDownOneInteractionLevel())
yield put(addPropToStoreObject('tile', tileId, { rack: undefined }))
yield updateTopologyOnServer(topologyId)
@@ -165,35 +159,34 @@ export function* onDeleteRack() {
}
}
-export function* onAddRackToTile(action) {
+export function* onAddRackToTile({ tileId }) {
try {
const topologyId = yield select((state) => state.currentTopologyId)
const rack = {
_id: uuid(),
name: 'Rack',
- tileId: action.tileId,
+ tileId,
capacity: DEFAULT_RACK_SLOT_CAPACITY,
powerCapacityW: DEFAULT_RACK_POWER_CAPACITY,
machines: [],
}
yield put(addToStore('rack', rack))
- yield put(addPropToStoreObject('tile', action.tileId, { rack: rack._id }))
+ yield put(addPropToStoreObject('tile', tileId, { rack: rack._id }))
yield updateTopologyOnServer(topologyId)
} catch (error) {
console.error(error)
}
}
-export function* onAddMachine(action) {
+export function* onAddMachine({ rackId, position }) {
try {
const topologyId = yield select((state) => state.currentTopologyId)
- const rackId = yield select((state) => state.objects.tile[state.interactionLevel.tileId].rack)
const rack = yield select((state) => state.objects.rack[rackId])
const machine = {
_id: uuid(),
rackId,
- position: action.position,
+ position,
cpus: [],
gpus: [],
memories: [],
@@ -209,15 +202,13 @@ export function* onAddMachine(action) {
}
}
-export function* onDeleteMachine() {
+export function* onDeleteMachine({ rackId, position }) {
try {
const topologyId = yield select((state) => state.currentTopologyId)
- const tileId = yield select((state) => state.interactionLevel.tileId)
- const position = yield select((state) => state.interactionLevel.position)
- const rack = yield select((state) => state.objects.rack[state.objects.tile[tileId].rack])
+ const rack = yield select((state) => state.objects.rack[rackId])
yield put(goDownOneInteractionLevel())
yield put(
- addPropToStoreObject('rack', rack._id, { machines: rack.machines.filter((_, idx) => idx !== position - 1) })
+ addPropToStoreObject('rack', rackId, { machines: rack.machines.filter((_, idx) => idx !== position - 1) })
)
yield updateTopologyOnServer(topologyId)
} catch (error) {
@@ -232,23 +223,19 @@ const unitMapping = {
storage: 'storages',
}
-export function* onAddUnit(action) {
+export function* onAddUnit({ machineId, unitType, id }) {
try {
const topologyId = yield select((state) => state.currentTopologyId)
- const tileId = yield select((state) => state.interactionLevel.tileId)
- const position = yield select((state) => state.interactionLevel.position)
- const machine = yield select(
- (state) => state.objects.machine[state.objects.rack[state.objects.tile[tileId].rack].machines[position - 1]]
- )
+ const machine = yield select((state) => state.objects.machine[machineId])
- if (machine[unitMapping[action.unitType]].length >= MAX_NUM_UNITS_PER_MACHINE) {
+ if (machine[unitMapping[unitType]].length >= MAX_NUM_UNITS_PER_MACHINE) {
return
}
- const units = [...machine[unitMapping[action.unitType]], action.id]
+ const units = [...machine[unitMapping[unitType]], id]
yield put(
addPropToStoreObject('machine', machine._id, {
- [unitMapping[action.unitType]]: units,
+ [unitMapping[unitType]]: units,
})
)
yield updateTopologyOnServer(topologyId)
@@ -257,20 +244,16 @@ export function* onAddUnit(action) {
}
}
-export function* onDeleteUnit(action) {
+export function* onDeleteUnit({ machineId, unitType, index }) {
try {
const topologyId = yield select((state) => state.currentTopologyId)
- const tileId = yield select((state) => state.interactionLevel.tileId)
- const position = yield select((state) => state.interactionLevel.position)
- const machine = yield select(
- (state) => state.objects.machine[state.objects.rack[state.objects.tile[tileId].rack].machines[position - 1]]
- )
- const unitIds = machine[unitMapping[action.unitType]].slice()
- unitIds.splice(action.index, 1)
+ const machine = yield select((state) => state.objects.machine[machineId])
+ const unitIds = machine[unitMapping[unitType]].slice()
+ unitIds.splice(index, 1)
yield put(
addPropToStoreObject('machine', machine._id, {
- [unitMapping[action.unitType]]: unitIds,
+ [unitMapping[unitType]]: unitIds,
})
)
yield updateTopologyOnServer(topologyId)