Просмотр исходного кода

Send full migration image map body when updating

When editing a replica, send the migration full image map body, even if
only one OS image map was updated.
Sergiu Miclea 6 лет назад
Родитель
Сommit
90b758da85

+ 1 - 0
.flowconfig

@@ -1,6 +1,7 @@
 [ignore]
 <PROJECT_ROOT>/node_modules/*
 <PROJECT_ROOT>/dist/.*
+<PROJECT_ROOT>/private/.*
 
 [libs]
 

+ 19 - 6
src/plugins/endpoint/default/OptionsSchemaPlugin.js

@@ -100,20 +100,33 @@ export const defaultGetDestinationEnv = (options: ?{ [string]: mixed }, oldOptio
   return env
 }
 
-export const defaultGetMigrationImageMap = (options: ?{ [string]: mixed }, migrationImageMapFieldName: string) => {
+export const defaultGetMigrationImageMap = (options: ?{ [string]: mixed }, oldOptions: any, migrationImageMapFieldName: string) => {
   let env = {}
-  if (!options) {
+  let usableOptions = options
+  if (!usableOptions) {
+    return env
+  }
+  let hasMigrationMap = Object.keys(usableOptions).find(k => migrationImageOsTypes.find(os => `${os}_os_image` === k))
+  if (!hasMigrationMap) {
     return env
   }
   migrationImageOsTypes.forEach(os => {
-    if (!options || !options[`${os}_os_image`]) {
-      return
+    let value = usableOptions[`${os}_os_image`]
+
+    // Make sure the migr. image mapping has all the OSes filled, even if only one OS mapping was updated,
+    // ie. don't send just the updated OS map to the server, send them all if one was updated.
+    if (!value) {
+      value = oldOptions && oldOptions[migrationImageMapFieldName] && oldOptions[migrationImageMapFieldName][os]
+      if (!value) {
+        return
+      }
     }
+
     if (!env[migrationImageMapFieldName]) {
       env[migrationImageMapFieldName] = {}
     }
 
-    env[migrationImageMapFieldName][os] = options[`${os}_os_image`]
+    env[migrationImageMapFieldName][os] = value
   })
 
   return env
@@ -139,7 +152,7 @@ export default class OptionsSchemaParser {
   static getDestinationEnv(options: ?{ [string]: mixed }, oldOptions?: any) {
     let env = {
       ...defaultGetDestinationEnv(options, oldOptions),
-      ...defaultGetMigrationImageMap(options, this.migrationImageMapFieldName),
+      ...defaultGetMigrationImageMap(options, oldOptions, this.migrationImageMapFieldName),
     }
     return env
   }

+ 1 - 1
src/plugins/endpoint/ovm/OptionsSchemaPlugin.js

@@ -70,7 +70,7 @@ export default class OptionsSchemaParser {
   static getDestinationEnv(options: ?{ [string]: mixed }, oldOptions?: any) {
     let env = {
       ...defaultGetDestinationEnv(options, oldOptions),
-      ...defaultGetMigrationImageMap(options, this.migrationImageMapFieldName),
+      ...defaultGetMigrationImageMap(options, oldOptions, this.migrationImageMapFieldName),
     }
     return env
   }