From 024cf048c102dc5f8be139a230ff967dad46a9b7 Mon Sep 17 00:00:00 2001
From: Morris Jette <jette@schedmd.com>
Date: Mon, 9 May 2016 11:51:21 -0700
Subject: [PATCH] Add capmc emulation script

Used for development and testing purposes
---
 contribs/cray/capmc | 550 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 550 insertions(+)
 create mode 100755 contribs/cray/capmc

diff --git a/contribs/cray/capmc b/contribs/cray/capmc
new file mode 100755
index 00000000000..e2827062778
--- /dev/null
+++ b/contribs/cray/capmc
@@ -0,0 +1,550 @@
+#!/bin/bash
+echo $* >>/var/tmp/capmc.log
+if [ $# -lt 1 ] ; then
+echo 'no argument'
+exit 1
+fi
+
+if [ "$1" = "get_power_cap_capabilities" ] ; then
+echo '{
+    "groups":[
+        {
+            "name":"01:000d:306e:0082:000a:0020:3a34:8300",
+            "desc":"ComputeANC_IVB_130W_10c_32GB_14900_IntelKNCAccel",
+            "supply":425,
+            "host_limit_min":100,
+            "host_limit_max":200,
+            "static":0,
+            "powerup":120,
+            "controls":[
+                {
+                    "name":"accel",
+                    "desc":"Accelerator control",
+                    "min":220,
+                    "max":260
+                },
+                {
+                    "name":"node",
+                    "desc":"Node manager control",
+                    "min":320,
+                    "max":460
+                }
+            ],
+            "nids":[
+                44,
+                45,
+                46,
+                47,
+                60,
+                61,
+                62,
+                63
+            ]
+        },
+        {
+            "name":"01:000d:306e:00e6:0014:0040:3a34:0000",
+            "desc":"ComputeANC_IVB_230W_20c_64GB_14900_NoAccel",
+            "supply":425,
+            "host_limit_min":200,
+            "host_limit_max":350,
+            "static":0,
+            "powerup":150,
+            "controls":[{
+                    "name":"node",
+                    "desc":"Node manager control",
+                    "min":200,
+                    "max":350
+                }],
+            "nids":[
+                52,
+                53,
+                54,
+                55
+            ]
+        },
+        {
+            "name":"01:000d:206d:0073:0008:0020:3a34:8100",
+            "desc":"ComputeANC_SNB_115W_8c_32GB_14900_KeplerK20XAccel",
+            "supply":425,
+            "host_limit_min":95,
+            "host_limit_max":185,
+            "static":0,
+            "powerup":120,
+            "controls":[
+                {
+                    "name":"accel",
+                    "desc":"Accelerator control",
+                    "min":180,
+                    "max":225
+                },
+                {
+                    "name":"node",
+                    "desc":"Node manager control",
+                    "min":275,
+                    "max":410
+                }
+            ],
+            "nids":[
+                4,
+                5,
+                6,
+                7
+            ]
+        },
+        {
+            "name":"01:000d:206d:00e6:0010:0040:3200:0000",
+            "desc":"ComputeANC_SNB_230W_16c_64GB_12800_NoAccel",
+            "supply":425,
+            "host_limit_min":200,
+            "host_limit_max":350,
+            "static":0,
+            "powerup":150,
+            "controls":[{
+                    "name":"node",
+                    "desc":"Node manager control",
+                    "min":200,
+                    "max":350
+                }],
+            "nids":[
+                32,
+                33,
+                34,
+                35,
+                48,
+                49,
+                50,
+                51
+            ]
+        },
+        {
+            "name":"01:000d:206d:00e6:0010:0020:3200:0000",
+            "desc":"ComputeANC_SNB_230W_16c_32GB_12800_NoAccel",
+            "supply":425,
+            "host_limit_min":200,
+            "host_limit_max":350,
+            "static":0,
+            "powerup":150,
+            "controls":[{
+                    "name":"node",
+                    "desc":"Node manager control",
+                    "min":200,
+                    "max":350
+                }],
+            "nids":[
+                36,
+                37,
+                38,
+                39,
+                40,
+                41,
+                42,
+                43
+            ]
+        },
+        {
+            "name":"01:000d:306e:00e6:0018:0020:3200:0000",
+            "desc":"ComputeANC_IVB_230W_24c_32GB_12800_NoAccel",
+            "supply":425,
+            "host_limit_min":200,
+            "host_limit_max":350,
+            "static":0,
+            "powerup":150,
+            "controls":[{
+                    "name":"node",
+                    "desc":"Node manager control",
+                    "min":200,
+                    "max":350
+                }],
+            "nids":[
+                56,
+                57,
+                58,
+                59
+            ]
+        },
+        {
+            "name":"01:000a:206d:0073:0008:0020:3200:0000",
+            "desc":"Service_SNB_115W_8c_32GB_12800_NoAccel",
+            "supply":425,
+            "host_limit_min":95,
+            "host_limit_max":185,
+            "static":0,
+            "powerup":120,
+            "controls":[{
+                    "name":"node",
+                    "desc":"Node manager control",
+                    "min":95,
+                    "max":185
+                }],
+            "nids":[
+                1,
+                2,
+                3,
+                10,
+                13,
+                14,
+                17,
+                18,
+                21,
+                22,
+                25,
+                26,
+                29,
+                30
+            ]
+        }
+    ],
+    "e":0,
+    "err_msg":""
+}'
+exit 0
+fi
+
+if [ "$1" = "get_node_energy_counter" ] ; then
+echo '{
+    "e": 0, 
+    "err_msg": "", 
+    "nid_count": 3, 
+    "nodes": [
+        {
+            "energy_ctr": 4761800, 
+            "nid": 1, 
+            "time": "2015-02-19 15:50:18.581552-06"
+        }, 
+        {
+            "energy_ctr": 4821800, 
+            "nid": 2, 
+            "time": "2015-02-19 15:50:18.581652-06"
+        },
+        {
+            "energy_ctr": 4821800, 
+            "nid": 3, 
+            "time": "2015-02-19 15:50:19.981752-06"
+        }
+    ]
+}'
+exit 0
+fi
+
+if [ "$1" = "node_off" ] ; then
+echo '{
+    "e":0,
+    "err_msg":"uccess"
+}'
+exit 0
+fi
+
+if [ "$1" = "node_offx" ] ; then
+echo '{
+    "e":22,
+    "err_msg":"Invalid nids"
+
+}'
+exit 0
+fi
+
+if [ "$1" = "node_on" ] ; then
+echo '{
+    "e":0,
+    "err_msg":"Success"
+}'
+exit 0
+fi
+
+if [ "$1" = "node_onx" ] ; then
+echo '{
+    "e":22,
+    "err_msg":"Invalid nids"
+
+}'
+exit 0
+fi
+
+if [ "$1" = "node_reinit" ] ; then
+echo '{
+    "e":0,
+    "err_msg":"uccess"
+}'
+exit 0
+fi
+
+if [ "$1" = "node_reinitx" ] ; then
+echo '{
+    "e":22,
+    "err_msg":"Invalid nids"
+
+}'
+exit 0
+fi
+
+if [ "$1" = "node_status" ] ; then
+echo '{
+    "e": 0, 
+    "err_msg": "", 
+    "off": [
+        1,
+        2,
+        3,
+        14, 
+        15
+    ], 
+    "on": [
+        1,
+        2,
+        3,
+        4, 
+        5,
+	6
+    ], 
+    "ready": [
+        16, 
+        27, 
+        18
+    ]
+}'
+exit 0
+fi
+
+if [ "$1" = "get_power_cap" ]; then
+echo '{
+    "e":0,
+    "err_msg":"",
+    "nids":[
+	{
+            "nid":1,
+            "controls":[
+                {
+                    "name":"accel",
+                    "val":101
+                },
+                {
+                    "name":"node",
+                    "val":101
+                }
+            ]
+        },
+	{
+            "nid":2,
+            "controls":[
+                {
+                    "name":"node",
+                    "val":102
+                },
+                {
+                    "name":"accel",
+                    "val":102
+                }
+            ]
+        },
+	{
+            "nid":3,
+            "controls":[
+                {
+                    "name":"node",
+                    "val":103
+                }
+            ]
+        },
+	{
+            "nid":4,
+            "controls":[
+                {
+                    "name":"node",
+                    "val":304
+                },
+                {
+                    "name":"node-biased",
+                    "val":411
+                },
+                {
+                    "name":"bias-factor",
+                    "val":1.0
+                },
+                {
+                    "name":"accel",
+                    "val":230
+                }
+            ]
+        }
+     ]
+}'
+exit 0
+fi
+
+if [ "$1" = "set_power_cap" ]; then
+echo '{
+    "e":0,
+    "err_msg":""
+}'
+exit 0
+fi
+
+if [ "$1" = "get_mcdram_capabilities" ] ; then
+echo '{
+    "nids": [
+        {
+            "mcdram_cfg": "flat,0,split,25,equal,50,cache,100", 
+            "nid": 1
+        }, 
+        {
+            "mcdram_cfg": "flat,0,split,25,equal,50,cache,100", 
+            "nid": 2
+        }, 
+        {
+            "mcdram_cfg": "flat,0,split,25,equal,50,cache,100", 
+            "nid": 3
+        },
+        {
+            "mcdram_cfg": "flat,0,split,25,equal,50,cache,100", 
+            "nid": 4
+        }, 
+        {
+            "mcdram_cfg": "flat,0,split,25,equal,50,cache,100", 
+            "nid": 5
+        }, 
+        {
+            "mcdram_cfg": "flat,0,split,25,equal,50,cache,100", 
+            "nid": 6
+        }
+    ], 
+    "err_msg": "Success; nids not eligible for mcdram operations were ignored", 
+    "e": 0
+}'
+exit 0
+fi
+
+if [ "$1" = "get_mcdram_cfg" ]; then
+echo '{
+    "nids": [
+        {
+            "mcdram_cfg": "flat", 
+            "mcdram_pct": "0", 
+            "mcdram_size": "8192MB", 
+            "nid": 1, 
+            "dram_size": "96GB"
+        }, 
+        {
+            "mcdram_cfg": "flat", 
+            "mcdram_pct": "0", 
+            "mcdram_size": "8192MB", 
+            "nid": 2, 
+            "dram_size": "96GB"
+        }, 
+        {
+            "mcdram_cfg": "flat", 
+            "mcdram_pct": "0", 
+            "mcdram_size": "8192MB", 
+            "nid": 3, 
+            "dram_size": "96GB"
+        },
+        {
+            "mcdram_cfg": "flat", 
+            "mcdram_pct": "0", 
+            "mcdram_size": "8192MB", 
+            "nid": 4, 
+            "dram_size": "96GB"
+        }, 
+        {
+            "mcdram_cfg": "flat", 
+            "mcdram_pct": "0", 
+            "mcdram_size": "8192MB", 
+            "nid": 5, 
+            "dram_size": "96GB"
+        }, 
+        {
+            "mcdram_cfg": "flat", 
+            "mcdram_pct": "0", 
+            "mcdram_size": "8192MB", 
+            "nid": 6, 
+            "dram_size": "96GB"
+        }
+    ], 
+    "err_msg": "Success; nids not eligible for mcdram operations were ignored", 
+    "e": 0
+}'
+exit 0
+fi
+
+if [ "$1" = "get_numa_capabilities" ]; then
+echo '{
+    "nids": [
+        {
+            "numa_cfg": "a2a,snc2,snc4,hemi,quad", 
+            "nid": 1
+        }, 
+        {
+            "numa_cfg": "a2a,snc2,snc4,hemi,quad", 
+            "nid": 2
+        }, 
+        {
+            "numa_cfg": "a2a,snc2,snc4,hemi,quad", 
+            "nid": 3
+        },
+        {
+            "numa_cfg": "a2a,snc2,snc4,hemi,quad", 
+            "nid": 4
+        },
+        {
+            "numa_cfg": "a2a,snc2,snc4,hemi,quad", 
+            "nid": 5
+        },
+        {
+            "numa_cfg": "a2a,snc2,snc4,hemi,quad", 
+            "nid": 6
+        }
+    ], 
+    "err_msg": "Success; nids not eligible for numa operations were ignored", 
+    "e": 0
+}'
+exit 0
+fi
+
+if [ "$1" = "get_numa_cfg" ]; then
+echo '{
+    "nids": [
+        {
+            "numa_cfg": "a2a", 
+            "nid": 1
+        }, 
+        {
+            "numa_cfg": "a2a", 
+            "nid": 2
+        }, 
+        {
+            "numa_cfg": "a2a", 
+            "nid": 3
+        },
+        {
+            "numa_cfg": "a2a", 
+            "nid": 4
+        }, 
+        {
+            "numa_cfg": "a2a", 
+            "nid": 5
+        }, 
+        {
+            "numa_cfg": "a2a", 
+            "nid": 6
+        }
+    ], 
+    "err_msg": "Success; nids not eligible for numa operations were ignored", 
+    "e": 0
+}'
+exit 0
+fi
+
+if [ "$1" = "json" ]; then
+cat >>/home/jette/Desktop/SLURM/install.linux/sbin/capmc2.log
+echo '{
+    "e":0,
+    "err_msg":""
+}'
+exit 0
+fi
+
+# DEFAULT
+echo '{
+    "e":0,
+    "err_msg":"Success"
+}'
+exit 0
-- 
GitLab