diff --git a/README.md b/README.md
index 9767646f..9ecffb23 100644
--- a/README.md
+++ b/README.md
@@ -54,6 +54,12 @@ There are multiple ways to get Lifeblood to try it out, refer to [installation s
In short - easiest way is to use [Lifeblood-Manager](https://github.com/pedohorse/lifeblood-manager/releases), as described in the docs
+### DCC tools and submitters
+
+Lifeblood-Manager can install houdini tools automatically.
+
+For manual installation - sumbitters for Houdini and Blender are available in [releases](https://github.com/pedohorse/lifeblood/releases).
+
## Links
- [blog + support](https://www.patreon.com/xapkohheh)
diff --git a/dcc_plugins_workspace/build_houdini.sh b/dcc_plugins_workspace/build_houdini.sh
index 0e4bf29c..536ba17c 100755
--- a/dcc_plugins_workspace/build_houdini.sh
+++ b/dcc_plugins_workspace/build_houdini.sh
@@ -7,7 +7,9 @@ pushd $(dirname $0)
mkdir -p $OUT/otls
# assume houdini environment is initialized
-hotl -l houdini/otls/Driver-lifeblood_submitter-1.0.0.hda $OUT/otls/Driver-lifeblood_submitter-1.0.0.hda
+for fname in houdini/otls/*.hda; do
+ hotl -l "${fname}" "$OUT/otls/${fname##*/}"
+done;
rsync -arhv houdini/presets $OUT
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/INDEX__SECTION b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/INDEX__SECTION
new file mode 100644
index 00000000..ab14a86e
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/INDEX__SECTION
@@ -0,0 +1,14 @@
+Operator: lifeblood::lifeblood_cache_submitter::1.0
+Label: Lifeblood Cache Submitter
+Path: oplib:/lifeblood::Driver/lifeblood_cache_submitter::1.0?lifeblood::Driver/lifeblood_cache_submitter::1.0
+Icon: opdef:/lifeblood::Driver/lifeblood_submitter::1.0.0?IconSVG
+Table: Driver
+License:
+Extra:
+User:
+Inputs: 0 to 1
+Subnet: true
+Python: false
+Empty: false
+Modified: Tue Nov 5 18:04:25 2024
+
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/Sections.list b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/Sections.list
new file mode 100644
index 00000000..c6111996
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/Sections.list
@@ -0,0 +1,4 @@
+""
+INDEX__SECTION INDEX_SECTION
+houdini.hdalibrary houdini.hdalibrary
+lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0 lifeblood::Driver/lifeblood_cache_submitter::1.0
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/houdini.hdalibrary b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/houdini.hdalibrary
new file mode 100644
index 00000000..e69de29b
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/.OPdummydefs b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/.OPdummydefs
new file mode 100644
index 00000000..df1bdc49
Binary files /dev/null and b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/.OPdummydefs differ
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/.OPfallbacks b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/.OPfallbacks
new file mode 100644
index 00000000..9ae3319a
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/.OPfallbacks
@@ -0,0 +1,2 @@
+lifeblood::Driver/lifeblood_submitter::1.0.0 /home/xapkohheh/git/dev_fhs/projects_py/lifeblood/dcc_plugins/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda
+lifeblood::Driver/lifeblood_submitter::1.0.0 otls/Driver-lifeblood_submitter-1.0.0.hda
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/Contents.createtimes b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/Contents.createtimes
new file mode 100644
index 00000000..cc1f2408
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/Contents.createtimes
@@ -0,0 +1,4 @@
+{
+ "hdaroot/lifeblood_submitter.def":1730822841,
+ "hdaroot.def":1730823159
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/Contents.mime b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/Contents.mime
new file mode 100644
index 00000000..39328981
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/Contents.mime
@@ -0,0 +1,790 @@
+MIME-Version: 1.0
+Content-Type: multipart/mixed; boundary="HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY"
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename=".OPfallbacks"
+Content-Type: application/external-reference
+
+.OPfallbacks
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename=".OPdummydefs"
+Content-Type: application/external-reference
+
+.OPdummydefs
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="node_type"
+Content-Type: text/plain
+
+Driver
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.init"
+Content-Type: text/plain
+
+type = lifeblood::lifeblood_cache_submitter::1.0
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.def"
+Content-Type: text/plain
+
+comment ""
+position -2.04412 -0.12549
+connectornextid 0
+flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on
+outputsNamed3
+{
+}
+inputsNamed3
+{
+}
+inputs
+{
+}
+stat
+{
+ create -1
+ modify -1
+ author xapkohheh@localhost
+ access 0777
+}
+color UT_Color RGB 0.8 0.8 0.8
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":""
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.inp"
+Content-Type: text/plain
+
+1
+0 0 6 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT"
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.init"
+Content-Type: text/plain
+
+type = lifeblood::lifeblood_submitter::1.0.0
+matchesdef = 1
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.def"
+Content-Type: text/plain
+
+comment ""
+position 0 5.2176
+connectornextid 0
+flags = lock off model off template off footprint off xray off bypass off display on render on highlight off unload off savedata off compress on colordefault on exposed on
+outputsNamed3
+{
+}
+inputsNamed3
+{
+}
+inputs
+{
+}
+stat
+{
+ create -1
+ modify -1
+ author xapkohheh@localhost
+ access 0777
+}
+color UT_Color RGB 0.8 0.8 0.8
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.spareparmdef"
+Content-Type: text/plain
+
+ group {
+ name "_hidden2"
+ label "_hidden"
+ invisibletab
+
+ parm {
+ name "execute"
+ baseparm
+ label "Render"
+ joinnext
+ export none
+ }
+ parm {
+ name "renderdialog"
+ baseparm
+ label "Controls..."
+ nolabel
+ export none
+ }
+ }
+
+ parm {
+ name "submit"
+ baseparm
+ label "create task"
+ export none
+ }
+ parm {
+ name "sch_ip"
+ baseparm
+ label "ip"
+ joinnext
+ export none
+ }
+ parm {
+ name "sch_port"
+ baseparm
+ label "port"
+ nolabel
+ export none
+ }
+ groupcollapsible {
+ name "broadcast_parameters2"
+ label "broadcast parameters"
+
+ parm {
+ name "brd_ip"
+ baseparm
+ label "broadcast ip"
+ joinnext
+ export none
+ }
+ parm {
+ name "brd_port"
+ baseparm
+ label "port"
+ nolabel
+ export none
+ }
+ parm {
+ name "brd_timeout"
+ baseparm
+ label "timeout (sec)"
+ export none
+ }
+ parm {
+ name "brd_identifier"
+ baseparm
+ label "identifier"
+ export none
+ }
+ }
+
+ parm {
+ name "broadcast_listen"
+ baseparm
+ label "Listen to Scheduler's broadcast to get ip and port"
+ export none
+ }
+ parm {
+ name "node_name"
+ baseparm
+ label "node name"
+ export none
+ }
+ parm {
+ name "task_name"
+ baseparm
+ label "task name"
+ export none
+ }
+ parm {
+ name "priority"
+ baseparm
+ label "task group priority"
+ export none
+ }
+ parm {
+ name "sepparm"
+ label "Separator"
+ type separator
+ default { "" }
+ }
+ parm {
+ name "f"
+ label "Start/End/Inc"
+ type integer
+ size 3
+ default { "$FSTART" "$FEND" "1" }
+ range { -1 1 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "framechunk_single"
+ label "All In Single Chunk"
+ type toggle
+ joinnext
+ default { "1" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "framechunk_size"
+ label "Chunk Size"
+ type integer
+ default { "10" }
+ hidewhen "{ framechunk_single == 1 }"
+ range { 1! 20 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "roppath"
+ label "Rop To Render"
+ type oppath
+ default { "" }
+ parmtag { "opfilter" "!!ROP!!" }
+ parmtag { "oprelative" "." }
+ parmtag { "script_callback_language" "python" }
+ }
+ group {
+ name "resmanagement"
+ label "Resource Requirements"
+
+ parm {
+ name "res_cpucount"
+ label "Cpu cores (min/pref)"
+ type vector2
+ size 2
+ default { "2" "4" }
+ range { 0.1! 32 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_cpumem"
+ label "Cpu RAM GB (min/pref)"
+ type vector2
+ size 2
+ default { "0.5" "0" }
+ range { 0.1! 128 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_gpucount"
+ label "Gpu count (min/pref)"
+ type vector2
+ invisible
+ size 2
+ default { "0" "0" }
+ range { 0.1 2 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_gpumem"
+ label "Gpu RAM GB (min/pref)"
+ type vector2
+ invisible
+ size 2
+ default { "0" "0" }
+ range { 0.1! 16 }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ group {
+ name "resmanagement_1"
+ label "Attributes"
+
+ multiparm {
+ name "attribs"
+ label "attributes"
+ baseparm
+ default 1
+ parmtag { "multistartoffset" "0" }
+
+ parm {
+ name "enable_#"
+ baseparm
+ label "name"
+ joinnext
+ export none
+ }
+ parm {
+ name "attr_name_#"
+ baseparm
+ label "name"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "attr_type_#"
+ baseparm
+ label "type"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "val_int_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "val_flt_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "val_str_#"
+ baseparm
+ label "value"
+ nolabel
+ export none
+ }
+ parm {
+ name "val_jsn_#"
+ baseparm
+ label "value"
+ nolabel
+ export none
+ }
+ parm {
+ name "val_bln_#"
+ baseparm
+ label "value"
+ nolabel
+ export none
+ }
+ multiscroll {
+ name "val_lst_#"
+ label "list values count"
+ baseparm
+ hidewhen "{ attr_type_# != list }"
+ parmtag { "multistartoffset" "0" }
+
+ parm {
+ name "lst_attr_type_#_#"
+ baseparm
+ label "type"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "lst_val_int_#_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "lst_val_flt_#_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "lst_val_str_#_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "lst_val_bln_#_#"
+ baseparm
+ label "value"
+ nolabel
+ export none
+ }
+ }
+
+ }
+
+ }
+
+ group {
+ name "resmanagement_2"
+ label "Environment resolver"
+
+ parm {
+ name "env_resolver_name"
+ baseparm
+ label "Environment Resolver Name"
+ export none
+ }
+ multiparm {
+ name "env_resolver_args"
+ label "environment resolver parameters"
+ baseparm
+ default 2
+ parmtag { "multistartoffset" "0" }
+
+ parm {
+ name "env_arg_name_#"
+ baseparm
+ label "name"
+ joinnext
+ export none
+ }
+ parm {
+ name "env_arg_val_#"
+ baseparm
+ label "value"
+ export none
+ }
+ }
+
+ }
+
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.chn"
+Content-Type: text/plain
+
+{
+ channel env_arg_name_0 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = \"user\" language = python }
+ }
+ channel env_arg_val_0 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "import getpass
+return getpass.getuser()" language = python }
+ }
+ channel env_arg_name_1 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "import sys
+return \"package.houdini.py%d_%d\" % (sys.version_info.major, sys.version_info.minor)" language = python }
+ }
+ channel env_arg_val_1 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "\"~=\" + hou.applicationVersionString()" language = python }
+ }
+ channel f1 {
+ lefttype = extend
+ righttype = extend
+ default = 1
+ flags = 0
+ segment { length = 0 value = 1 1 expr = ch(\"../f1\") }
+ }
+ channel f2 {
+ lefttype = extend
+ righttype = extend
+ default = 240
+ flags = 0
+ segment { length = 0 value = 240 240 expr = ch(\"../f2\") }
+ }
+ channel val_jsn_2 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "node = hou.pwd()
+
+start, end, inc = node.parmTuple('f').eval()
+if int(start) == start and int(end) == end and int(inc) == inc:
+ start, end, inc = int(start), int(end), int(inc)
+
+frames = []
+assert start <= end
+assert inc > 0
+
+while start <= end:
+ frames.append(start)
+ start += inc
+
+return repr(frames)" language = python }
+ }
+ channel val_jsn_3 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "import json
+n = hou.pwd()
+return json.dumps({'cpu': {'min': n.evalParm('res_cpucountx'),
+ 'pref': n.evalParm('res_cpucounty')},
+ 'cmem': {'min': n.evalParm('res_cpumemx'),
+ 'pref': n.evalParm('res_cpumemy')}})
+" language = python }
+ }
+ channel val_int_4 {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "if(ch(\"framechunk_single\"), ch(\"f2\")-ch(\"f1\")+1, ch(\"framechunk_size\"))" }
+ }
+ channel sch_ip {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"127.0.0.1\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../sch_ip\") }
+ }
+ channel sch_port {
+ lefttype = extend
+ righttype = extend
+ default = 1384
+ flags = 0
+ segment { length = 0 value = 1384 1384 expr = ch(\"../sch_port\") }
+ }
+ channel brd_ip {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"0.0.0.0\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../brd_ip\") }
+ }
+ channel brd_port {
+ lefttype = extend
+ righttype = extend
+ default = 34305
+ flags = 0
+ segment { length = 0 value = 34305 34305 expr = ch(\"../brd_port\") }
+ }
+ channel brd_timeout {
+ lefttype = extend
+ righttype = extend
+ default = 15
+ flags = 0
+ segment { length = 0 value = 15 15 expr = ch(\"../brd_timeout\") }
+ }
+ channel brd_identifier {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"lifeblood_scheduler\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../brd_identifier\") }
+ }
+ channel broadcast_listen {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../broadcast_listen\") }
+ }
+ channel node_name {
+ lefttype = extend
+ righttype = extend
+ defaultString = "\"IN CACHE\""
+ flags = 0
+ segment { length = 0 expr = chs(\"../node_name\") }
+ }
+ channel task_name {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"$OS\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../task_name\") }
+ }
+ channel priority {
+ lefttype = extend
+ righttype = extend
+ default = 50
+ flags = 0
+ segment { length = 0 value = 50 50 expr = ch(\"../priority\") }
+ }
+ channel f3 {
+ lefttype = extend
+ righttype = extend
+ default = 1
+ flags = 0
+ segment { length = 0 value = 1 1 expr = ch(\"../f3\") }
+ }
+ channel framechunk_single {
+ lefttype = extend
+ righttype = extend
+ default = 1
+ flags = 0
+ segment { length = 0 value = 1 1 expr = ch(\"../framechunk_single\") }
+ }
+ channel framechunk_size {
+ lefttype = extend
+ righttype = extend
+ default = 11
+ flags = 0
+ segment { length = 0 value = 11 11 expr = ch(\"../framechunk_size\") }
+ }
+ channel roppath {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { length = 0 expr = chsop(\"../roppath\") }
+ }
+ channel res_cpucountx {
+ lefttype = extend
+ righttype = extend
+ default = 2
+ flags = 0
+ segment { length = 0 value = 2 2 expr = ch(\"../res_cpucountx\") }
+ }
+ channel res_cpucounty {
+ lefttype = extend
+ righttype = extend
+ default = 4
+ flags = 0
+ segment { length = 0 value = 4 4 expr = ch(\"../res_cpucounty\") }
+ }
+ channel res_cpumemx {
+ lefttype = extend
+ righttype = extend
+ default = 0.5
+ flags = 0
+ segment { length = 0 value = 0.5 0.5 expr = ch(\"../res_cpumemx\") }
+ }
+ channel res_cpumemy {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../res_cpumemy\") }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+execute [ 0 locks=0 ] ( 0 )
+renderdialog [ 0 locks=0 ] ( 0 )
+_hidden [ 0 locks=0 ] ( 0 )
+submit [ 0 locks=0 ] ( 0 )
+sch_ip [ 0 locks=0 ] ( [ sch_ip 127.0.0.1 ] )
+sch_port [ 0 locks=0 ] ( [ sch_port 1384 ] )
+broadcast_parameters [ 0 locks=0 ] ( 0 )
+brd_ip [ 0 locks=0 ] ( [ brd_ip 0.0.0.0 ] )
+brd_port [ 0 locks=0 ] ( [ brd_port 34305 ] )
+brd_timeout [ 0 locks=0 ] ( [ brd_timeout 15 ] )
+brd_identifier [ 0 locks=0 ] ( [ brd_identifier lifeblood_scheduler ] )
+broadcast_listen [ 0 locks=0 ] ( [ broadcast_listen 0 ] )
+node_name [ 0 locks=0 ] ( [ node_name "" ] )
+task_name [ 0 locks=0 ] ( [ task_name $OS ] )
+priority [ 0 locks=0 ] ( [ priority 50 ] )
+folder0 [ 0 locks=0 ] ( 0 0 )
+attribs [ 0 locks=0 ] ( 5 )
+env_resolver_name [ 0 locks=0 ] ( StandardEnvironmentResolver )
+env_resolver_args [ 0 locks=0 ] ( 2 )
+enable_0 [ 0 locks=0 ] ( "on" )
+attr_name_0 [ 0 locks=0 ] ( hipfile )
+attr_type_0 [ 0 locks=0 ] ( "str" )
+val_int_0 [ 0 locks=0 ] ( 0 )
+val_flt_0 [ 0 locks=0 ] ( 0 )
+val_str_0 [ 0 locks=0 ] ( $HIPFILE )
+val_jsn_0 [ 0 locks=0 ] ( "" )
+val_bln_0 [ 0 locks=0 ] ( "off" )
+val_lst_0 [ 0 locks=0 ] ( 0 )
+env_arg_name_0 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ env_arg_name_0 "" ] )
+env_arg_val_0 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ env_arg_val_0 "" ] )
+env_arg_name_1 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ env_arg_name_1 "" ] )
+env_arg_val_1 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ env_arg_val_1 "" ] )
+_hidden2 [ 0 locks=0 ] ( 0 )
+broadcast_parameters2 [ 0 locks=0 ] ( 0 )
+sepparm [ 0 locks=0 ] ( )
+f [ 0 locks=0 ] ( [ f1 0 ] [ f2 0 ] [ f3 1 ] )
+framechunk_single [ 0 locks=0 ] ( [ framechunk_single 1 ] )
+framechunk_size [ 0 locks=0 ] ( [ framechunk_size 10 ] )
+roppath [ 0 locks=0 ] ( [ roppath "" ] )
+resmanagement [ 0 locks=0 ] ( 0 0 0 )
+res_cpucount [ 0 locks=0 ] ( [ res_cpucountx 2 ] [ res_cpucounty 4 ] )
+res_cpumem [ 0 locks=0 ] ( [ res_cpumemx 0.5 ] [ res_cpumemy 0 ] )
+res_gpucount [ 0 locks=0 ] ( 0 0 )
+res_gpumem [ 0 locks=0 ] ( 0 0 )
+enable_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "on" )
+attr_name_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( hipdriver )
+attr_type_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "str" )
+val_int_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_flt_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_str_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( `chsop(\"roppath\")` )
+val_jsn_1 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( "" )
+val_bln_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "off" )
+val_lst_1 [ 0 locks=0 ] ( 0 )
+enable_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "on" )
+attr_name_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( frames )
+attr_type_2 [ 8 locks=0 autoscope=0 autosel=4294967295 ] ( "json" )
+val_int_2 [ 8 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_flt_2 [ 8 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_str_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "" )
+val_jsn_2 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ val_jsn_2 "" ] )
+val_bln_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "off" )
+val_lst_2 [ 0 locks=0 ] ( 0 )
+enable_3 [ 0 locks=0 ] ( "on" )
+attr_name_3 [ 0 locks=0 ] ( requirements )
+attr_type_3 [ 0 locks=0 ] ( "json" )
+val_int_3 [ 0 locks=0 ] ( 0 )
+val_flt_3 [ 0 locks=0 ] ( 0 )
+val_str_3 [ 0 locks=0 ] ( "" )
+val_jsn_3 [ 0 locks=0 ] ( [ val_jsn_3 "" ] )
+val_bln_3 [ 0 locks=0 ] ( "off" )
+val_lst_3 [ 0 locks=0 ] ( 0 )
+enable_4 [ 0 locks=0 ] ( "on" )
+attr_name_4 [ 0 locks=0 ] ( framechunk_size )
+attr_type_4 [ 0 locks=0 ] ( "int" )
+val_int_4 [ 8 locks=0 autoscope=1 autosel=4294967295 ] ( [ val_int_4 0 ] )
+val_flt_4 [ 0 locks=0 ] ( 0 )
+val_str_4 [ 0 locks=0 ] ( "" )
+val_jsn_4 [ 0 locks=0 ] ( "" )
+val_bln_4 [ 0 locks=0 ] ( "off" )
+val_lst_4 [ 0 locks=0 ] ( 0 )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":""
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.net"
+Content-Type: text/plain
+
+1
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY--
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/Contents.modtimes b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/Contents.modtimes
new file mode 100644
index 00000000..d4ade25c
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/Contents.modtimes
@@ -0,0 +1,4 @@
+{
+ "hdaroot/lifeblood_submitter.def":1730823327,
+ "hdaroot.def":1730826241
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/Sections.list b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/Sections.list
new file mode 100644
index 00000000..49f2c152
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Contents.dir/Sections.list
@@ -0,0 +1,2 @@
+""
+Contents.mime Contents.mime
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/CreateScript b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/CreateScript
new file mode 100644
index 00000000..b3f889d1
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/CreateScript
@@ -0,0 +1,14 @@
+# Automatically generated script
+\set noalias = 1
+#
+# Creation script for lifeblood::lifeblood_cache_submitter::1.0 operator
+#
+
+if ( "$arg1" == "" ) then
+ echo This script is intended as a creation script
+ exit
+endif
+
+# Node $arg1 (lifeblood::Driver/lifeblood_cache_submitter::1.0)
+opexprlanguage -s hscript $arg1
+opuserdata -n '___Version___' -v '' $arg1
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/DialogScript b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/DialogScript
new file mode 100644
index 00000000..b6ce7147
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/DialogScript
@@ -0,0 +1,251 @@
+# Dialog script for lifeblood::lifeblood_cache_submitter::1.0 automatically generated
+
+{
+ name lifeblood::lifeblood_cache_submitter::1.0
+ script lifeblood::lifeblood_cache_submitter::1.0
+ label "Lifeblood Cache Submitter"
+
+ help {
+ ""
+ }
+
+ inputlabel 1 "Input #1"
+
+ parm {
+ name "execute"
+ baseparm
+ label "Render"
+ invisible
+ joinnext
+ export none
+ }
+ parm {
+ name "renderdialog"
+ baseparm
+ label "Controls..."
+ nolabel
+ invisible
+ export none
+ }
+ import {
+ label submitter
+ source "op:./lifeblood_submitter"
+ enable 1
+
+ parm {
+ name "submit"
+ label "create task"
+ type button
+ default { "0" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "submit" }
+ parmtag { "script_callback" "hou.phm().submit_btn_callback(hou.pwd())" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "sch_ip"
+ label "ip"
+ type string
+ joinnext
+ default { "127.0.0.1" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "sch_ip" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "sch_port"
+ label "port"
+ type integer
+ nolabel
+ default { "1384" }
+ range { 0 10 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "sch_port" }
+ parmtag { "script_callback_language" "python" }
+ }
+ groupcollapsible {
+ name "folder2"
+ label "broadcast parameters"
+ grouptag { "import_source" "op:./lifeblood_submitter" }
+ grouptag { "import_token" "broadcast_parameters2:broadcast parameters" }
+
+ parm {
+ name "brd_ip"
+ label "broadcast ip"
+ type string
+ joinnext
+ default { "0.0.0.0" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "brd_ip" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "brd_port"
+ label "port"
+ type integer
+ nolabel
+ default { "34305" }
+ range { 0 10 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "brd_port" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "brd_timeout"
+ label "timeout (sec)"
+ type integer
+ default { "15" }
+ range { 1! 20 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "brd_timeout" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "brd_identifier"
+ label "identifier"
+ type string
+ default { "lifeblood_scheduler" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "brd_identifier" }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ parm {
+ name "broadcast_listen"
+ label "Listen to Scheduler's broadcast to get ip and port"
+ type button
+ default { "0" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "broadcast_listen" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "node_name"
+ label "node name"
+ type string
+ default { "IN CACHE" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "node_name" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "task_name"
+ label "task name"
+ type string
+ default { "$OS" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "task_name" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "priority"
+ label "task group priority"
+ type float
+ default { "50" }
+ range { 0! 100 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "priority" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "sepparm"
+ label "Separator"
+ type separator
+ default { "" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "sepparm" }
+ }
+ parm {
+ name "f"
+ label "Start/End/Inc"
+ type integer
+ size 3
+ default { [ "$FSTART" hscript-expr ] [ "$FEND" hscript-expr ] "1" }
+ range { -1 1 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "f" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "framechunk_single"
+ label "All In Single Chunk"
+ type toggle
+ joinnext
+ default { "on" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "framechunk_single" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "framechunk_size"
+ label "Chunk Size"
+ type integer
+ default { "11" }
+ hidewhen "{ framechunk_single == 1 }"
+ range { 1! 20 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "framechunk_size" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "roppath"
+ label "Rop To Render"
+ type oppath
+ default { "" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "roppath" }
+ parmtag { "opfilter" "!!ROP!!" }
+ parmtag { "script_callback_language" "python" }
+ }
+ group {
+ name "folder3"
+ label "Resource Requirements"
+ grouptag { "import_source" "op:./lifeblood_submitter" }
+ grouptag { "import_token" "resmanagement:Resource Requirements" }
+
+ parm {
+ name "res_cpucount"
+ label "Cpu cores (min/pref)"
+ type vector2
+ size 2
+ default { "2" "4" }
+ range { 0.1! 32 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "res_cpucount" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_cpumem"
+ label "Cpu RAM GB (min/pref)"
+ type vector2
+ size 2
+ default { "0.5" "0.1" }
+ range { 0.1! 128 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "res_cpumem" }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ }
+
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/ExtraFileOptions b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/ExtraFileOptions
new file mode 100644
index 00000000..58dd14f9
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/ExtraFileOptions
@@ -0,0 +1,22 @@
+{
+ "PythonModule/Cursor":{
+ "type":"intarray",
+ "value":[29,47]
+ },
+ "PythonModule/IsExpr":{
+ "type":"bool",
+ "value":false
+ },
+ "PythonModule/IsPython":{
+ "type":"bool",
+ "value":true
+ },
+ "PythonModule/IsScript":{
+ "type":"bool",
+ "value":true
+ },
+ "PythonModule/Source":{
+ "type":"string",
+ "value":""
+ }
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Help b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Help
new file mode 100644
index 00000000..e69de29b
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/InternalFileOptions b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/InternalFileOptions
new file mode 100644
index 00000000..222988aa
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/InternalFileOptions
@@ -0,0 +1,10 @@
+{
+ "nodeconntype":{
+ "type":"bool",
+ "value":false
+ },
+ "nodeparmtype":{
+ "type":"bool",
+ "value":false
+ }
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/PythonModule b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/PythonModule
new file mode 100644
index 00000000..51002963
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/PythonModule
@@ -0,0 +1,35 @@
+import hou
+
+
+def submit_btn_callback(node):
+ # validate
+ ropnode = node.parm('roppath').evalAsNode()
+ if ropnode is None:
+ hou.ui.displayMessage(
+ 'Cache node is not selected',
+ severity=hou.severityType.Error,
+ title='you forgot to select node to cache/render'
+ )
+ return
+ if ropnode.type().nameComponents()[2] == 'filecache' and (subnode := ropnode.node('render')):
+ roppath = node.parm('roppath').evalAsString()
+ if not roppath.endswith('/'):
+ roppath += '/'
+ try:
+ node.parm('roppath').set(roppath + 'render')
+ ropnode = subnode
+ except hou.OperationFailed:
+ pass # we tried, it may be locked
+ assert node.parm('roppath').evalAsNode() == ropnode
+
+ if not isinstance(ropnode, hou.RopNode):
+ hou.ui.displayMessage(
+ f'Specify a Rop node to cache/render. Like a Rop Geometry node in SOP"',
+ severity=hou.severityType.Error,
+ title='Invalid node type to cache/render'
+ )
+ return
+
+ # submit
+ inner = node.node('lifeblood_submitter')
+ inner.hdaModule().submit_button_callback(inner)
\ No newline at end of file
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Sections.list b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Sections.list
new file mode 100644
index 00000000..2cd14533
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Sections.list
@@ -0,0 +1,10 @@
+""
+DialogScript DialogScript
+CreateScript CreateScript
+InternalFileOptions InternalFileOptions
+Contents.gz Contents.gz
+TypePropertiesOptions TypePropertiesOptions
+Help Help
+Tools.shelf Tools.shelf
+PythonModule PythonModule
+ExtraFileOptions ExtraFileOptions
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Tools.shelf b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Tools.shelf
new file mode 100644
index 00000000..e502ee9f
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/Tools.shelf
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+ ROP
+
+
+ $HDA_TABLE_AND_NAME
+
+ Lifeblood
+
+
+
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/TypePropertiesOptions b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/TypePropertiesOptions
new file mode 100644
index 00000000..a6d52acf
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_cache_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__cache__submitter_8_81.0/TypePropertiesOptions
@@ -0,0 +1,14 @@
+CheckExternal := 1;
+ContentsCompressionType := 1;
+ForbidOutsideParms := 1;
+GzipContents := 1;
+LockContents := 1;
+MakeDefault := 1;
+ParmsFromVfl := 0;
+PrefixDroppedParmLabel := 0;
+PrefixDroppedParmName := 0;
+SaveCachedCode := 0;
+SaveIcon := 1;
+SaveSpareParms := 0;
+UnlockOnCreate := 0;
+UseDSParms := 1;
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/INDEX__SECTION b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/INDEX__SECTION
new file mode 100644
index 00000000..f6096b35
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/INDEX__SECTION
@@ -0,0 +1,14 @@
+Operator: lifeblood::lifeblood_distributed_flip_submitter::1.0
+Label: Lifeblood Distributed Flip Submitter
+Path: oplib:/lifeblood::Driver/lifeblood_distributed_flip_submitter::1.0?lifeblood::Driver/lifeblood_distributed_flip_submitter::1.0
+Icon: opdef:/lifeblood::Driver/lifeblood_submitter::1.0.0?IconSVG
+Table: Driver
+License:
+Extra:
+User:
+Inputs: 0 to 1
+Subnet: true
+Python: false
+Empty: false
+Modified: Tue Nov 5 19:33:55 2024
+
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/Sections.list b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/Sections.list
new file mode 100644
index 00000000..bdd2e32c
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/Sections.list
@@ -0,0 +1,4 @@
+""
+INDEX__SECTION INDEX_SECTION
+houdini.hdalibrary houdini.hdalibrary
+lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0 lifeblood::Driver/lifeblood_distributed_flip_submitter::1.0
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/houdini.hdalibrary b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/houdini.hdalibrary
new file mode 100644
index 00000000..e69de29b
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/.OPdummydefs b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/.OPdummydefs
new file mode 100644
index 00000000..5827045c
Binary files /dev/null and b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/.OPdummydefs differ
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/.OPfallbacks b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/.OPfallbacks
new file mode 100644
index 00000000..9ae3319a
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/.OPfallbacks
@@ -0,0 +1,2 @@
+lifeblood::Driver/lifeblood_submitter::1.0.0 /home/xapkohheh/git/dev_fhs/projects_py/lifeblood/dcc_plugins/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda
+lifeblood::Driver/lifeblood_submitter::1.0.0 otls/Driver-lifeblood_submitter-1.0.0.hda
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/Contents.createtimes b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/Contents.createtimes
new file mode 100644
index 00000000..a15ac0c6
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/Contents.createtimes
@@ -0,0 +1,4 @@
+{
+ "hdaroot/lifeblood_submitter.def":1730830362,
+ "hdaroot.def":1730830431
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/Contents.mime b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/Contents.mime
new file mode 100644
index 00000000..7c5d077a
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/Contents.mime
@@ -0,0 +1,885 @@
+MIME-Version: 1.0
+Content-Type: multipart/mixed; boundary="HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY"
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename=".OPfallbacks"
+Content-Type: application/external-reference
+
+.OPfallbacks
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename=".OPdummydefs"
+Content-Type: application/external-reference
+
+.OPdummydefs
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="node_type"
+Content-Type: text/plain
+
+Driver
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.init"
+Content-Type: text/plain
+
+type = lifeblood::lifeblood_distributed_flip_submitter::1.0
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.def"
+Content-Type: text/plain
+
+comment ""
+position 2.77614 -2.57647
+connectornextid 0
+flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on
+outputsNamed3
+{
+}
+inputsNamed3
+{
+}
+inputs
+{
+}
+stat
+{
+ create -1
+ modify -1
+ author xapkohheh@localhost
+ access 0777
+}
+color UT_Color RGB 0.8 0.8 0.8
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":""
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.inp"
+Content-Type: text/plain
+
+1
+0 0 6 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT"
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.init"
+Content-Type: text/plain
+
+type = lifeblood::lifeblood_submitter::1.0.0
+matchesdef = 1
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.def"
+Content-Type: text/plain
+
+comment ""
+position 0 5.2176
+connectornextid 0
+flags = lock off model off template off footprint off xray off bypass off display on render on highlight off unload off savedata off compress on colordefault on exposed on
+outputsNamed3
+{
+}
+inputsNamed3
+{
+}
+inputs
+{
+}
+stat
+{
+ create -1
+ modify -1
+ author xapkohheh@localhost
+ access 0777
+}
+color UT_Color RGB 0.8 0.8 0.8
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.spareparmdef"
+Content-Type: text/plain
+
+ group {
+ name "_hidden2"
+ label "_hidden"
+ invisibletab
+
+ parm {
+ name "execute"
+ baseparm
+ label "Render"
+ joinnext
+ export none
+ }
+ parm {
+ name "renderdialog"
+ baseparm
+ label "Controls..."
+ nolabel
+ export none
+ }
+ }
+
+ parm {
+ name "submit"
+ baseparm
+ label "create task"
+ export none
+ }
+ parm {
+ name "sch_ip"
+ baseparm
+ label "ip"
+ joinnext
+ export none
+ }
+ parm {
+ name "sch_port"
+ baseparm
+ label "port"
+ nolabel
+ export none
+ }
+ groupcollapsible {
+ name "broadcast_parameters2"
+ label "broadcast parameters"
+
+ parm {
+ name "brd_ip"
+ baseparm
+ label "broadcast ip"
+ joinnext
+ export none
+ }
+ parm {
+ name "brd_port"
+ baseparm
+ label "port"
+ nolabel
+ export none
+ }
+ parm {
+ name "brd_timeout"
+ baseparm
+ label "timeout (sec)"
+ export none
+ }
+ parm {
+ name "brd_identifier"
+ baseparm
+ label "identifier"
+ export none
+ }
+ }
+
+ parm {
+ name "broadcast_listen"
+ baseparm
+ label "Listen to Scheduler's broadcast to get ip and port"
+ export none
+ }
+ parm {
+ name "node_name"
+ baseparm
+ label "node name"
+ export none
+ }
+ parm {
+ name "task_name"
+ baseparm
+ label "task name"
+ export none
+ }
+ parm {
+ name "priority"
+ baseparm
+ label "task group priority"
+ export none
+ }
+ parm {
+ name "netscratchpath"
+ label "global scratch location"
+ type float
+ invisible
+ default { "0" }
+ range { 0 10 }
+ }
+ parm {
+ name "sepparm"
+ label "Separator"
+ type separator
+ default { "" }
+ }
+ parm {
+ name "f"
+ label "Start/End/Inc"
+ type integer
+ size 3
+ default { "$FSTART" "$FEND" "1" }
+ range { -1 1 }
+ parmtag { "script_callback_language" "python" }
+ }
+ groupsimple {
+ name "distribution_control"
+ label "Distributed Sim Information"
+
+ parm {
+ name "labelparm"
+ label "Message"
+ type label
+ default { "specify required nodes.\nYou may also use the button below to adjust houdini's stock setup" }
+ parmtag { "sidefx::look" "block" }
+ }
+ parm {
+ name "distributed_object_node"
+ label "Sim Object Node"
+ type oppath
+ default { "" }
+ parmtag { "opfilter" "!!DOP!!" }
+ parmtag { "oprelative" "." }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "distributed_cache_node"
+ label "Cache Node"
+ type oppath
+ default { "" }
+ parmtag { "opfilter" "!!DOP!!" }
+ parmtag { "oprelative" "." }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "distributed_control_node"
+ label "Sim Control Node"
+ type oppath
+ default { "" }
+ parmtag { "opfilter" "!!DOP!!" }
+ parmtag { "oprelative" "." }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "control_push_parms"
+ label "adjust default setup"
+ type button
+ default { "0" }
+ help "makes adjustments to default distribution setup so that it works with Lifeblood"
+ parmtag { "script_callback" "node=hou.pwd();exec(node.evalParm('control_push_parms_button_code'))" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "control_push_parms_button_code"
+ label "control_push_parms_button_code"
+ type string
+ invisible
+ default { "" }
+ parmtag { "editor" "1" }
+ parmtag { "editorlang" "python" }
+ }
+ }
+
+ group {
+ name "resmanagement"
+ label "Slice Resource Requirements"
+
+ parm {
+ name "res_cpucount"
+ label "Cpu cores (min/pref)"
+ type vector2
+ size 2
+ default { "2" "4" }
+ range { 0.1! 32 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_cpumem"
+ label "Cpu RAM GB (min/pref)"
+ type vector2
+ size 2
+ default { "0.5" "0" }
+ range { 0.1! 128 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_gpucount"
+ label "Gpu count (min/pref)"
+ type vector2
+ invisible
+ size 2
+ default { "0" "0" }
+ range { 0.1! 2 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_gpumem"
+ label "Gpu RAM GB (min/pref)"
+ type vector2
+ invisible
+ size 2
+ default { "0" "0" }
+ range { 0.1! 16 }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ group {
+ name "resmanagement_1"
+ label "Attributes"
+
+ multiparm {
+ name "attribs"
+ label "attributes"
+ baseparm
+ default 1
+ parmtag { "multistartoffset" "0" }
+
+ parm {
+ name "enable_#"
+ baseparm
+ label "name"
+ joinnext
+ export none
+ }
+ parm {
+ name "attr_name_#"
+ baseparm
+ label "name"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "attr_type_#"
+ baseparm
+ label "type"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "val_int_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "val_flt_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "val_str_#"
+ baseparm
+ label "value"
+ nolabel
+ export none
+ }
+ parm {
+ name "val_jsn_#"
+ baseparm
+ label "value"
+ nolabel
+ export none
+ }
+ parm {
+ name "val_bln_#"
+ baseparm
+ label "value"
+ nolabel
+ export none
+ }
+ multiscroll {
+ name "val_lst_#"
+ label "list values count"
+ baseparm
+ hidewhen "{ attr_type_# != list }"
+ parmtag { "multistartoffset" "0" }
+
+ parm {
+ name "lst_attr_type_#_#"
+ baseparm
+ label "type"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "lst_val_int_#_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "lst_val_flt_#_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "lst_val_str_#_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "lst_val_bln_#_#"
+ baseparm
+ label "value"
+ nolabel
+ export none
+ }
+ }
+
+ }
+
+ }
+
+ group {
+ name "resmanagement_2"
+ label "Environment resolver"
+
+ parm {
+ name "env_resolver_name"
+ baseparm
+ label "Environment Resolver Name"
+ export none
+ }
+ multiparm {
+ name "env_resolver_args"
+ label "environment resolver parameters"
+ baseparm
+ default 2
+ parmtag { "multistartoffset" "0" }
+
+ parm {
+ name "env_arg_name_#"
+ baseparm
+ label "name"
+ joinnext
+ export none
+ }
+ parm {
+ name "env_arg_val_#"
+ baseparm
+ label "value"
+ export none
+ }
+ }
+
+ }
+
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.chn"
+Content-Type: text/plain
+
+{
+ channel env_arg_name_0 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = \"user\" language = python }
+ }
+ channel env_arg_val_0 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "import getpass
+return getpass.getuser()" language = python }
+ }
+ channel env_arg_name_1 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "import sys
+return \"package.houdini.py%d_%d\" % (sys.version_info.major, sys.version_info.minor)" language = python }
+ }
+ channel env_arg_val_1 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "\"~=\" + hou.applicationVersionString()" language = python }
+ }
+ channel f1 {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../f1\") }
+ }
+ channel f2 {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../f2\") }
+ }
+ channel val_jsn_2 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "node = hou.pwd()
+
+start, end, inc = node.parmTuple('f').eval()
+if int(start) == start and int(end) == end and int(inc) == inc:
+ start, end, inc = int(start), int(end), int(inc)
+
+frames = []
+assert start <= end
+assert inc > 0
+
+while start <= end:
+ frames.append(start)
+ start += inc
+
+return repr(frames)" language = python }
+ }
+ channel val_int_1 {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "expr =\\
+'`dopcountslices('\\
+'opfullpath(chs(\"distributed_object_node\")+\"/..\"),'\\
+'chs(chs(\"distributed_object_node\")+\"/objname\"),'\\
+'\"Slice\"'\\
+')`'
+# this dirty trick is only to cause expression evaluation only at sim start frame
+node = hou.pwd()
+start_frame = node.parm('distributed_object_node').evalAsNode().dopNetNode().parm('startframe').eval()
+return int(hou.text.expandStringAtFrame(expr, start_frame))
+" language = python }
+ }
+ channel val_jsn_3 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "import json
+n = hou.pwd()
+return json.dumps({'cpu': {'min': n.evalParm('res_cpucountx'),
+ 'pref': n.evalParm('res_cpucounty')},
+ 'cmem': {'min': n.evalParm('res_cpumemx'),
+ 'pref': n.evalParm('res_cpumemy')}})
+" language = python }
+ }
+ channel sch_ip {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"127.0.0.1\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../sch_ip\") }
+ }
+ channel sch_port {
+ lefttype = extend
+ righttype = extend
+ default = 1384
+ flags = 0
+ segment { length = 0 value = 1384 1384 expr = ch(\"../sch_port\") }
+ }
+ channel brd_ip {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"0.0.0.0\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../brd_ip\") }
+ }
+ channel brd_port {
+ lefttype = extend
+ righttype = extend
+ default = 34305
+ flags = 0
+ segment { length = 0 value = 34305 34305 expr = ch(\"../brd_port\") }
+ }
+ channel brd_timeout {
+ lefttype = extend
+ righttype = extend
+ default = 15
+ flags = 0
+ segment { length = 0 value = 15 15 expr = ch(\"../brd_timeout\") }
+ }
+ channel brd_identifier {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"lifeblood_scheduler\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../brd_identifier\") }
+ }
+ channel broadcast_listen {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../broadcast_listen\") }
+ }
+ channel node_name {
+ lefttype = extend
+ righttype = extend
+ defaultString = "\"IN DISTRIBUTED SLICES\""
+ flags = 0
+ segment { length = 0 expr = chs(\"../node_name\") }
+ }
+ channel task_name {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"$OS\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../task_name\") }
+ }
+ channel priority {
+ lefttype = extend
+ righttype = extend
+ default = 50
+ flags = 0
+ segment { length = 0 value = 50 50 expr = ch(\"../priority\") }
+ }
+ channel f3 {
+ lefttype = extend
+ righttype = extend
+ default = 1
+ flags = 0
+ segment { length = 0 value = 1 1 expr = ch(\"../f3\") }
+ }
+ channel labelparm {
+ lefttype = extend
+ righttype = extend
+ defaultString = "\"specify required nodes.
+You may also use the button below to adjust houdini's stock setup\""
+ flags = 0
+ segment { length = 0 expr = chs(\"../labelparm\") }
+ }
+ channel distributed_object_node {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"/obj/AutoDopNetwork/flipfluidobject1\"
+ flags = 0
+ segment { length = 0 expr = chsop(\"../distributed_object_node\") }
+ }
+ channel distributed_cache_node {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"/obj/distribute_flipfluidobject1/save_slices\"
+ flags = 0
+ segment { length = 0 expr = chsop(\"../distributed_cache_node\") }
+ }
+ channel distributed_control_node {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"/obj/AutoDopNetwork/DISTRIBUTE_flipfluidobject1_CONTROLS\"
+ flags = 0
+ segment { length = 0 expr = chsop(\"../distributed_control_node\") }
+ }
+ channel res_cpucountx {
+ lefttype = extend
+ righttype = extend
+ default = 1
+ flags = 0
+ segment { length = 0 value = 1 1 expr = ch(\"../res_cpucountx\") }
+ }
+ channel res_cpucounty {
+ lefttype = extend
+ righttype = extend
+ default = 32
+ flags = 0
+ segment { length = 0 value = 32 32 expr = ch(\"../res_cpucounty\") }
+ }
+ channel res_cpumemx {
+ lefttype = extend
+ righttype = extend
+ default = 1
+ flags = 0
+ segment { length = 0 value = 1 1 expr = ch(\"../res_cpumemx\") }
+ }
+ channel res_cpumemy {
+ lefttype = extend
+ righttype = extend
+ default = 128
+ flags = 0
+ segment { length = 0 value = 128 128 expr = ch(\"../res_cpumemy\") }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+execute [ 0 locks=0 ] ( 0 )
+renderdialog [ 0 locks=0 ] ( 0 )
+_hidden [ 0 locks=0 ] ( 0 )
+submit [ 0 locks=0 ] ( 0 )
+sch_ip [ 0 locks=0 ] ( [ sch_ip 127.0.0.1 ] )
+sch_port [ 0 locks=0 ] ( [ sch_port 1384 ] )
+broadcast_parameters [ 0 locks=0 ] ( 0 )
+brd_ip [ 0 locks=0 ] ( [ brd_ip 0.0.0.0 ] )
+brd_port [ 0 locks=0 ] ( [ brd_port 34305 ] )
+brd_timeout [ 0 locks=0 ] ( [ brd_timeout 15 ] )
+brd_identifier [ 0 locks=0 ] ( [ brd_identifier lifeblood_scheduler ] )
+broadcast_listen [ 0 locks=0 ] ( [ broadcast_listen 0 ] )
+node_name [ 0 locks=0 ] ( [ node_name "" ] )
+task_name [ 0 locks=0 ] ( [ task_name $OS ] )
+priority [ 0 locks=0 ] ( [ priority 50 ] )
+folder0 [ 0 locks=0 ] ( 0 0 )
+attribs [ 0 locks=0 ] ( 5 )
+env_resolver_name [ 0 locks=0 ] ( StandardEnvironmentResolver )
+env_resolver_args [ 0 locks=0 ] ( 2 )
+enable_0 [ 0 locks=0 ] ( "on" )
+attr_name_0 [ 0 locks=0 ] ( hipfile )
+attr_type_0 [ 0 locks=0 ] ( "str" )
+val_int_0 [ 0 locks=0 ] ( 0 )
+val_flt_0 [ 0 locks=0 ] ( 0 )
+val_str_0 [ 0 locks=0 ] ( $HIPFILE )
+val_jsn_0 [ 0 locks=0 ] ( "" )
+val_bln_0 [ 0 locks=0 ] ( "off" )
+val_lst_0 [ 0 locks=0 ] ( 0 )
+env_arg_name_0 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ env_arg_name_0 "" ] )
+env_arg_val_0 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ env_arg_val_0 "" ] )
+env_arg_name_1 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ env_arg_name_1 "" ] )
+env_arg_val_1 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ env_arg_val_1 "" ] )
+_hidden2 [ 0 locks=0 ] ( 0 )
+broadcast_parameters2 [ 0 locks=0 ] ( 0 )
+netscratchpath [ 0 locks=0 ] ( 0 )
+sepparm [ 0 locks=0 ] ( )
+f [ 0 locks=0 ] ( [ f1 0 ] [ f2 0 ] [ f3 1 ] )
+distribution_control [ 0 locks=0 ] ( 0 )
+labelparm [ 0 locks=0 ] ( [ labelparm "specify required nodes.
+You may also use the button below to adjust houdini's stock setup" ] )
+distributed_object_node [ 0 locks=0 ] ( [ distributed_object_node "" ] )
+distributed_cache_node [ 0 locks=0 ] ( [ distributed_cache_node "" ] )
+distributed_control_node [ 0 locks=0 ] ( [ distributed_control_node "" ] )
+control_push_parms [ 0 locks=0 ] ( 0 )
+control_push_parms_button_code [ 0 locks=0 ] ( "def do():
+ node = hou.pwd()
+ control_node = node.parm('distributed_control_node').evalAsNode()
+ cache_write = node.parm('distributed_cache_node').evalAsNode()
+ object_node = node.parm('distributed_object_node').evalAsNode()
+ if cache_write is None or cache_write.type().name() != 'rop_geometry':
+ hou.ui.displayMessage('Cache Node is invalid', severity=hou.severityType.Error)
+ return
+ cache_parm = cache_write.parm('sopoutput').getReferencedParm()
+ if cache_parm is None:
+ hou.ui.displayMessage('Cache node does not reference a filemerge', severity=hou.severityType.Error)
+ return
+ cache_read = cache_parm.node()
+ if cache_read is None:
+ hou.ui.displayMessage('Cache node does not reference a filemerge', severity=hou.severityType.Error)
+ return
+ if control_node is None:
+ hou.ui.displayMessage('Sim Control Node is invalid', severity=hou.severityType.Error)
+ return
+ if object_node is None:
+ hou.ui.displayMessage('Sim Object Node is invalid', severity=hou.severityType.Error)
+ return
+
+ control_node.parm('visaddress').set('\\`@simtracker_host\\`')
+ control_node.parm('port').setExpression('@simtracker_port')
+ control_node.parm('slice').setExpression('@slice')
+
+ cache_read.parm('file').set(cache_read.parm('file').unexpandedString().replace('\\$SLICE', '\\$LBATTR_slice'))
+ cache_read.parm('merge_var').set('LBATTR_slice')
+
+ hou.ui.displayMessage('setup updated, all valid')
+
+do()" )
+resmanagement [ 0 locks=0 ] ( 1 1 1 )
+res_cpucount [ 0 locks=0 ] ( [ res_cpucountx 2 ] [ res_cpucounty 4 ] )
+res_cpumem [ 0 locks=0 ] ( [ res_cpumemx 0.5 ] [ res_cpumemy 0 ] )
+res_gpucount [ 0 locks=0 ] ( 0 0 )
+res_gpumem [ 0 locks=0 ] ( 0 0 )
+enable_1 [ 0 locks=0 ] ( "on" )
+attr_name_1 [ 0 locks=0 ] ( "slice count" )
+attr_type_1 [ 0 locks=0 ] ( "int" )
+val_int_1 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ val_int_1 0 ] )
+val_flt_1 [ 0 locks=0 ] ( 0 )
+val_str_1 [ 0 locks=0 ] ( "" )
+val_jsn_1 [ 0 locks=0 ] ( "" )
+val_bln_1 [ 0 locks=0 ] ( "off" )
+val_lst_1 [ 0 locks=0 ] ( 0 )
+enable_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "on" )
+attr_name_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( frames )
+attr_type_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "json" )
+val_int_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_flt_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_str_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "" )
+val_jsn_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( [ val_jsn_2 "" ] )
+val_bln_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "off" )
+val_lst_2 [ 0 locks=0 ] ( 0 )
+enable_3 [ 0 locks=0 ] ( "on" )
+attr_name_3 [ 0 locks=0 ] ( requirements )
+attr_type_3 [ 0 locks=0 ] ( "json" )
+val_int_3 [ 0 locks=0 ] ( 0 )
+val_flt_3 [ 0 locks=0 ] ( 0 )
+val_str_3 [ 0 locks=0 ] ( "" )
+val_jsn_3 [ 0 locks=0 ] ( [ val_jsn_3 "" ] )
+val_bln_3 [ 0 locks=0 ] ( "off" )
+val_lst_3 [ 0 locks=0 ] ( 0 )
+enable_4 [ 0 locks=0 ] ( "on" )
+attr_name_4 [ 0 locks=0 ] ( hipdriver )
+attr_type_4 [ 0 locks=0 ] ( "str" )
+val_int_4 [ 0 locks=0 ] ( 0 )
+val_flt_4 [ 0 locks=0 ] ( 0 )
+val_str_4 [ 0 locks=0 ] ( `chsop(\"distributed_cache_node\")` )
+val_jsn_4 [ 0 locks=0 ] ( "" )
+val_bln_4 [ 0 locks=0 ] ( "off" )
+val_lst_4 [ 0 locks=0 ] ( 0 )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":""
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.net"
+Content-Type: text/plain
+
+1
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY--
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/Contents.modtimes b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/Contents.modtimes
new file mode 100644
index 00000000..6595eb9e
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/Contents.modtimes
@@ -0,0 +1,4 @@
+{
+ "hdaroot/lifeblood_submitter.def":1730830589,
+ "hdaroot.def":1730831605
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/Sections.list b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/Sections.list
new file mode 100644
index 00000000..49f2c152
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Contents.dir/Sections.list
@@ -0,0 +1,2 @@
+""
+Contents.mime Contents.mime
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/CreateScript b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/CreateScript
new file mode 100644
index 00000000..94dea957
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/CreateScript
@@ -0,0 +1,14 @@
+# Automatically generated script
+\set noalias = 1
+#
+# Creation script for lifeblood::lifeblood_distributed_flip_submitter::1.0 operator
+#
+
+if ( "$arg1" == "" ) then
+ echo This script is intended as a creation script
+ exit
+endif
+
+# Node $arg1 (lifeblood::Driver/lifeblood_distributed_flip_submitter::1.0)
+opexprlanguage -s hscript $arg1
+opuserdata -n '___Version___' -v '' $arg1
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/DialogScript b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/DialogScript
new file mode 100644
index 00000000..94ec52cb
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/DialogScript
@@ -0,0 +1,280 @@
+# Dialog script for lifeblood::lifeblood_distributed_flip_submitter::1.0 automatically generated
+
+{
+ name lifeblood::lifeblood_distributed_flip_submitter::1.0
+ script lifeblood::lifeblood_distributed_flip_submitter::1.0
+ label "Lifeblood Distributed Flip Submitter"
+
+ help {
+ ""
+ }
+
+ inputlabel 1 "Input #1"
+
+ parm {
+ name "execute"
+ baseparm
+ label "Render"
+ invisible
+ joinnext
+ export none
+ }
+ parm {
+ name "renderdialog"
+ baseparm
+ label "Controls..."
+ nolabel
+ invisible
+ export none
+ }
+ import {
+ label submitter
+ source "op:./lifeblood_submitter"
+ enable 1
+
+ parm {
+ name "submit"
+ label "create task"
+ type button
+ default { "0" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "submit" }
+ parmtag { "script_callback" "hou.phm().submit_btn_callback(hou.pwd())" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "sch_ip"
+ label "ip"
+ type string
+ joinnext
+ default { "127.0.0.1" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "sch_ip" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "sch_port"
+ label "port"
+ type integer
+ nolabel
+ default { "1384" }
+ range { 0 10 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "sch_port" }
+ parmtag { "script_callback_language" "python" }
+ }
+ groupcollapsible {
+ name "folder2"
+ label "broadcast parameters"
+ grouptag { "import_source" "op:./lifeblood_submitter" }
+ grouptag { "import_token" "broadcast_parameters2:broadcast parameters" }
+
+ parm {
+ name "brd_ip"
+ label "broadcast ip"
+ type string
+ joinnext
+ default { "0.0.0.0" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "brd_ip" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "brd_port"
+ label "port"
+ type integer
+ nolabel
+ default { "34305" }
+ range { 0 10 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "brd_port" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "brd_timeout"
+ label "timeout (sec)"
+ type integer
+ default { "15" }
+ range { 1! 20 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "brd_timeout" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "brd_identifier"
+ label "identifier"
+ type string
+ default { "lifeblood_scheduler" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "brd_identifier" }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ parm {
+ name "broadcast_listen"
+ label "Listen to Scheduler's broadcast to get ip and port"
+ type button
+ default { "0" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "broadcast_listen" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "node_name"
+ label "node name"
+ type string
+ default { "IN DISTRIBUTED SLICES" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "node_name" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "task_name"
+ label "task name"
+ type string
+ default { "$OS" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "task_name" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "priority"
+ label "task group priority"
+ type float
+ default { "50" }
+ range { 0! 100 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "priority" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "sepparm"
+ label "Separator"
+ type separator
+ default { "" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "sepparm" }
+ }
+ parm {
+ name "f"
+ label "Start/End/Inc"
+ type integer
+ size 3
+ default { [ "$FSTART" hscript-expr ] [ "$FEND" hscript-expr ] "1" }
+ range { -1 1 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "f" }
+ parmtag { "script_callback_language" "python" }
+ }
+ groupsimple {
+ name "folder3"
+ label "Distributed Sim Information"
+ grouptag { "import_source" "op:./lifeblood_submitter" }
+ grouptag { "import_token" "distribution_control:Distributed Sim Information" }
+
+ parm {
+ name "labelparm"
+ label "Message"
+ type label
+ default { "specify required nodes.\nYou may also use the button below to adjust houdini's stock setup" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "labelparm" }
+ parmtag { "sidefx::look" "block" }
+ }
+ parm {
+ name "distributed_object_node"
+ label "Sim Object Node"
+ type oppath
+ default { "/obj/AutoDopNetwork/flipfluidobject1" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "distributed_object_node" }
+ parmtag { "opfilter" "!!DOP!!" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "distributed_cache_node"
+ label "Cache Node"
+ type oppath
+ default { "/obj/distribute_flipfluidobject1/save_slices" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "distributed_cache_node" }
+ parmtag { "opfilter" "!!DOP!!" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "distributed_control_node"
+ label "Sim Control Node"
+ type oppath
+ default { "/obj/AutoDopNetwork/DISTRIBUTE_flipfluidobject1_CONTROLS" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "distributed_control_node" }
+ parmtag { "opfilter" "!!DOP!!" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "control_push_parms"
+ label "adjust default setup"
+ type button
+ default { "0" }
+ help "makes adjustments to default distribution setup so that it works with Lifeblood"
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "control_push_parms" }
+ parmtag { "script_callback" "hou.phm().update_setup_button_callback(hou.pwd())" }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ group {
+ name "folder4"
+ label "Slice Resource Requirements"
+ grouptag { "import_source" "op:./lifeblood_submitter" }
+ grouptag { "import_token" "resmanagement:Slice Resource Requirements" }
+
+ parm {
+ name "res_cpucount"
+ label "Cpu cores (min/pref)"
+ type vector2
+ size 2
+ default { "1" "32" }
+ range { 0.1! 32 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "res_cpucount" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_cpumem"
+ label "Cpu RAM GB (min/pref)"
+ type vector2
+ size 2
+ default { "1" "128" }
+ range { 0.1! 128 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "res_cpumem" }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ }
+
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/ExtraFileOptions b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/ExtraFileOptions
new file mode 100644
index 00000000..ce3fcf95
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/ExtraFileOptions
@@ -0,0 +1,22 @@
+{
+ "PythonModule/Cursor":{
+ "type":"intarray",
+ "value":[26,19]
+ },
+ "PythonModule/IsExpr":{
+ "type":"bool",
+ "value":false
+ },
+ "PythonModule/IsPython":{
+ "type":"bool",
+ "value":true
+ },
+ "PythonModule/IsScript":{
+ "type":"bool",
+ "value":true
+ },
+ "PythonModule/Source":{
+ "type":"string",
+ "value":""
+ }
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Help b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Help
new file mode 100644
index 00000000..e69de29b
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/InternalFileOptions b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/InternalFileOptions
new file mode 100644
index 00000000..222988aa
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/InternalFileOptions
@@ -0,0 +1,10 @@
+{
+ "nodeconntype":{
+ "type":"bool",
+ "value":false
+ },
+ "nodeparmtype":{
+ "type":"bool",
+ "value":false
+ }
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/PythonModule b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/PythonModule
new file mode 100644
index 00000000..467adb89
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/PythonModule
@@ -0,0 +1,94 @@
+import hou
+
+
+class UpdateSetupError(RuntimeError):
+ pass
+
+
+def submit_btn_callback(node):
+ # validate
+ simobj_node = node.parm('distributed_object_node').evalAsNode()
+ cache_node = node.parm('distributed_cache_node').evalAsNode()
+ simctl_node = node.parm('distributed_control_node').evalAsNode()
+ for tgtnode, tgtname in (
+ (simobj_node, 'Flip Object (dop)'),
+ (cache_node, 'Slice Merge (sop)'),
+ (simctl_node, 'Distribution control null (dop)'),
+ ):
+ if tgtnode is None:
+ hou.ui.displayMessage(
+ f'{tgtname} node is not selected or invalid',
+ severity=hou.severityType.Error,
+ title='you forgot to select some node'
+ )
+ return
+ for tgtnode, tgttype, errmsg in (
+ (simobj_node, 'flipobject', 'Sim Object must point to Flip Object node'),
+ (cache_node, 'rop_geometry', 'Cache Node must point to save_slices rop geometry node'),
+ (simctl_node, 'null', 'Sim Control node must point to dop null with distribution control parameters node'),
+ ):
+ if tgtnode.type().nameComponents()[2] != tgttype:
+ hou.ui.displayMessage(
+ errmsg,
+ severity=hou.severityType.Error,
+ title='you forgot to select some node'
+ )
+ return
+
+ # ensure setup updated
+ try:
+ update_setup(node)
+ except UpdateSetupError as e:
+ hou.ui.displayMessage(str(e), severity=hou.severityType.Error)
+ return
+
+ # submit
+ inner = node.node('lifeblood_submitter')
+ inner.hdaModule().submit_button_callback(inner)
+
+
+def update_setup_button_callback(node):
+ try:
+ update_setup(node)
+ except UpdateSetupError as e:
+ hou.ui.displayMessage(str(e), severity=hou.severityType.Error)
+ return
+
+ hou.ui.displayMessage('setup updated, all valid')
+
+
+def set_parm_if_needed(parm, value, is_expression=False):
+ if not is_expression and parm.unexpandedString() == value:
+ return
+ elif is_expression and parm.expression() == value:
+ return
+
+ if is_expression:
+ parm.setExpression(value)
+ else:
+ parm.set(value)
+
+
+def update_setup(node):
+ control_node = node.parm('distributed_control_node').evalAsNode()
+ cache_write = node.parm('distributed_cache_node').evalAsNode()
+ object_node = node.parm('distributed_object_node').evalAsNode()
+ if cache_write is None or cache_write.type().name() != 'rop_geometry':
+ raise UpdateSetupError('Cache Node is invalid')
+ cache_parm = cache_write.parm('sopoutput').getReferencedParm()
+ if cache_parm is None:
+ raise UpdateSetupError('Cache node does not reference a filemerge')
+ cache_read = cache_parm.node()
+ if cache_read is None:
+ raise UpdateSetupError('Cache node does not reference a filemerge')
+ if control_node is None:
+ raise UpdateSetupError('Sim Control Node is invalid')
+ if object_node is None:
+ raise UpdateSetupError('Sim Object Node is invalid')
+
+ set_parm_if_needed(control_node.parm('visaddress'), '`@simtracker_host`')
+ set_parm_if_needed(control_node.parm('port'), '@simtracker_port', is_expression=True)
+ set_parm_if_needed(control_node.parm('slice'), '@slice', is_expression=True)
+
+ set_parm_if_needed(cache_read.parm('file'), cache_read.parm('file').unexpandedString().replace('$SLICE', '$LBATTR_slice'))
+ set_parm_if_needed(cache_read.parm('merge_var'), 'LBATTR_slice')
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Sections.list b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Sections.list
new file mode 100644
index 00000000..2cd14533
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Sections.list
@@ -0,0 +1,10 @@
+""
+DialogScript DialogScript
+CreateScript CreateScript
+InternalFileOptions InternalFileOptions
+Contents.gz Contents.gz
+TypePropertiesOptions TypePropertiesOptions
+Help Help
+Tools.shelf Tools.shelf
+PythonModule PythonModule
+ExtraFileOptions ExtraFileOptions
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Tools.shelf b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Tools.shelf
new file mode 100644
index 00000000..daa081c5
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/Tools.shelf
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+ ROP
+
+
+ $HDA_TABLE_AND_NAME
+
+ Lifeblood
+
+
+ RenderMan
+
+
+
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/TypePropertiesOptions b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/TypePropertiesOptions
new file mode 100644
index 00000000..a6d52acf
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_distributed_flip_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__distributed__flip__submitter_8_81.0/TypePropertiesOptions
@@ -0,0 +1,14 @@
+CheckExternal := 1;
+ContentsCompressionType := 1;
+ForbidOutsideParms := 1;
+GzipContents := 1;
+LockContents := 1;
+MakeDefault := 1;
+ParmsFromVfl := 0;
+PrefixDroppedParmLabel := 0;
+PrefixDroppedParmName := 0;
+SaveCachedCode := 0;
+SaveIcon := 1;
+SaveSpareParms := 0;
+UnlockOnCreate := 0;
+UseDSParms := 1;
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/INDEX__SECTION b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/INDEX__SECTION
new file mode 100644
index 00000000..51865a43
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/INDEX__SECTION
@@ -0,0 +1,14 @@
+Operator: lifeblood::lifeblood_karma_submitter::1.0
+Label: Lifeblood Karma Submitter
+Path: oplib:/lifeblood::Driver/lifeblood_karma_submitter::1.0?lifeblood::Driver/lifeblood_karma_submitter::1.0
+Icon: opdef:/lifeblood::Driver/lifeblood_submitter::1.0.0?IconSVG
+Table: Driver
+License:
+Extra:
+User:
+Inputs: 0 to 1
+Subnet: true
+Python: false
+Empty: false
+Modified: Tue Nov 5 16:20:01 2024
+
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/Sections.list b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/Sections.list
new file mode 100644
index 00000000..3c233759
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/Sections.list
@@ -0,0 +1,4 @@
+""
+INDEX__SECTION INDEX_SECTION
+houdini.hdalibrary houdini.hdalibrary
+lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0 lifeblood::Driver/lifeblood_karma_submitter::1.0
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/houdini.hdalibrary b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/houdini.hdalibrary
new file mode 100644
index 00000000..e69de29b
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/.OPdummydefs b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/.OPdummydefs
new file mode 100644
index 00000000..f390b41f
Binary files /dev/null and b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/.OPdummydefs differ
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/.OPfallbacks b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/.OPfallbacks
new file mode 100644
index 00000000..9ae3319a
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/.OPfallbacks
@@ -0,0 +1,2 @@
+lifeblood::Driver/lifeblood_submitter::1.0.0 /home/xapkohheh/git/dev_fhs/projects_py/lifeblood/dcc_plugins/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda
+lifeblood::Driver/lifeblood_submitter::1.0.0 otls/Driver-lifeblood_submitter-1.0.0.hda
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/Contents.createtimes b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/Contents.createtimes
new file mode 100644
index 00000000..3f051617
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/Contents.createtimes
@@ -0,0 +1,4 @@
+{
+ "hdaroot/lifeblood_submitter.def":1730817200,
+ "hdaroot.def":1730815331
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/Contents.mime b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/Contents.mime
new file mode 100644
index 00000000..b58898d4
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/Contents.mime
@@ -0,0 +1,879 @@
+MIME-Version: 1.0
+Content-Type: multipart/mixed; boundary="HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY"
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename=".OPfallbacks"
+Content-Type: application/external-reference
+
+.OPfallbacks
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename=".OPdummydefs"
+Content-Type: application/external-reference
+
+.OPdummydefs
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="node_type"
+Content-Type: text/plain
+
+Driver
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.init"
+Content-Type: text/plain
+
+type = lifeblood::lifeblood_karma_submitter::1.0
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.def"
+Content-Type: text/plain
+
+comment ""
+position -1.60294 2.47255
+connectornextid 0
+flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on
+outputsNamed3
+{
+}
+inputsNamed3
+{
+}
+inputs
+{
+}
+stat
+{
+ create -1
+ modify -1
+ author xapkohheh@localhost
+ access 0777
+}
+color UT_Color RGB 0.8 0.8 0.8
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":""
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.inp"
+Content-Type: text/plain
+
+1
+0 0 6 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT"
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.init"
+Content-Type: text/plain
+
+type = lifeblood::lifeblood_submitter::1.0.0
+matchesdef = 1
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.def"
+Content-Type: text/plain
+
+comment ""
+position -0.582353 4.96082
+connectornextid 0
+flags = lock off model off template off footprint off xray off bypass off display on render on highlight off unload off savedata off compress on colordefault on exposed on
+outputsNamed3
+{
+}
+inputsNamed3
+{
+}
+inputs
+{
+}
+stat
+{
+ create -1
+ modify -1
+ author xapkohheh@localhost
+ access 0777
+}
+color UT_Color RGB 0.8 0.8 0.8
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.spareparmdef"
+Content-Type: text/plain
+
+ group {
+ name "_hidden2"
+ label "_hidden"
+ invisibletab
+
+ parm {
+ name "execute"
+ baseparm
+ label "Render"
+ joinnext
+ export none
+ }
+ parm {
+ name "renderdialog"
+ baseparm
+ label "Controls..."
+ nolabel
+ export none
+ }
+ }
+
+ parm {
+ name "submit"
+ baseparm
+ label "create task"
+ export none
+ }
+ parm {
+ name "sch_ip"
+ baseparm
+ label "ip"
+ joinnext
+ export none
+ }
+ parm {
+ name "sch_port"
+ baseparm
+ label "port"
+ nolabel
+ export none
+ }
+ groupcollapsible {
+ name "broadcast_parameters2"
+ label "broadcast parameters"
+
+ parm {
+ name "brd_ip"
+ baseparm
+ label "broadcast ip"
+ joinnext
+ export none
+ }
+ parm {
+ name "brd_port"
+ baseparm
+ label "port"
+ nolabel
+ export none
+ }
+ parm {
+ name "brd_timeout"
+ baseparm
+ label "timeout (sec)"
+ export none
+ }
+ parm {
+ name "brd_identifier"
+ baseparm
+ label "identifier"
+ export none
+ }
+ }
+
+ parm {
+ name "broadcast_listen"
+ baseparm
+ label "Listen to Scheduler's broadcast to get ip and port"
+ export none
+ }
+ parm {
+ name "node_name"
+ baseparm
+ label "node name"
+ export none
+ }
+ parm {
+ name "task_name"
+ baseparm
+ label "task name"
+ export none
+ }
+ parm {
+ name "priority"
+ baseparm
+ label "task group priority"
+ export none
+ }
+ parm {
+ name "sepparm"
+ label "Separator"
+ type separator
+ default { "" }
+ }
+ parm {
+ name "f"
+ label "Start/End/Inc"
+ type integer
+ size 3
+ default { "$FSTART" "$FEND" "1" }
+ range { -1 1 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "framechunk_size"
+ label "Frame Chunk Size"
+ type integer
+ default { "10" }
+ help "number of frames per single ifd generation task"
+ range { 1! 20 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "roppath"
+ label "Karma or USDrender Node To Render"
+ type oppath
+ default { "" }
+ parmtag { "opfilter" "!!ROP!!" }
+ parmtag { "oprelative" "." }
+ parmtag { "script_callback_language" "python" }
+ }
+ group {
+ name "resmanagement_group"
+ label "Resource Requirements"
+
+ groupsimple {
+ name "resmanagement"
+ label "USD Generation"
+
+ parm {
+ name "res_cpucount"
+ label "Cpu cores (min/pref)"
+ type vector2
+ size 2
+ default { "2" "4" }
+ range { 0.1! 32 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_cpumem"
+ label "Cpu RAM GB (min/pref)"
+ type vector2
+ size 2
+ default { "0.5" "0" }
+ range { 0.1! 128 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_gpucount"
+ label "Gpu count (min/pref)"
+ type vector2
+ invisible
+ size 2
+ default { "0" "0" }
+ range { 0.1! 2 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_gpumem"
+ label "Gpu RAM GB (min/pref)"
+ type vector2
+ invisible
+ size 2
+ default { "0" "0" }
+ range { 0.1! 16 }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ groupsimple {
+ name "resmanagement_mantra"
+ label "Karma Rendering"
+
+ parm {
+ name "res_m_cpucount"
+ label "Cpu cores (min/pref)"
+ type vector2
+ size 2
+ default { "2" "4" }
+ range { 0.1! 32 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_m_cpumem"
+ label "Cpu RAM GB (min/pref)"
+ type vector2
+ size 2
+ default { "0.5" "0" }
+ range { 0.1! 128 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_m_gpucount"
+ label "Gpu count (min/pref)"
+ type vector2
+ invisible
+ size 2
+ default { "0" "0" }
+ range { 0.1! 2 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_m_gpumem"
+ label "Gpu RAM GB (min/pref)"
+ type vector2
+ invisible
+ size 2
+ default { "0" "0" }
+ range { 0.1! 16 }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ }
+
+ group {
+ name "resmanagement_group_1"
+ label "Attributes"
+
+ multiparm {
+ name "attribs"
+ label "attributes"
+ baseparm
+ default 1
+ parmtag { "multistartoffset" "0" }
+
+ parm {
+ name "enable_#"
+ baseparm
+ label "name"
+ joinnext
+ export none
+ }
+ parm {
+ name "attr_name_#"
+ baseparm
+ label "name"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "attr_type_#"
+ baseparm
+ label "type"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "val_int_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "val_flt_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "val_str_#"
+ baseparm
+ label "value"
+ nolabel
+ export none
+ }
+ parm {
+ name "val_jsn_#"
+ baseparm
+ label "value"
+ nolabel
+ export none
+ }
+ parm {
+ name "val_bln_#"
+ baseparm
+ label "value"
+ nolabel
+ export none
+ }
+ multiscroll {
+ name "val_lst_#"
+ label "list values count"
+ baseparm
+ hidewhen "{ attr_type_# != list }"
+ parmtag { "multistartoffset" "0" }
+
+ parm {
+ name "lst_attr_type_#_#"
+ baseparm
+ label "type"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "lst_val_int_#_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "lst_val_flt_#_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "lst_val_str_#_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "lst_val_bln_#_#"
+ baseparm
+ label "value"
+ nolabel
+ export none
+ }
+ }
+
+ }
+
+ }
+
+ group {
+ name "resmanagement_group_2"
+ label "Environment resolver"
+
+ parm {
+ name "env_resolver_name"
+ baseparm
+ label "Environment Resolver Name"
+ export none
+ }
+ multiparm {
+ name "env_resolver_args"
+ label "environment resolver parameters"
+ baseparm
+ default 2
+ parmtag { "multistartoffset" "0" }
+
+ parm {
+ name "env_arg_name_#"
+ baseparm
+ label "name"
+ joinnext
+ export none
+ }
+ parm {
+ name "env_arg_val_#"
+ baseparm
+ label "value"
+ export none
+ }
+ }
+
+ }
+
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.chn"
+Content-Type: text/plain
+
+{
+ channel env_arg_name_0 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = \"user\" language = python }
+ }
+ channel env_arg_val_0 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "import getpass
+return getpass.getuser()" language = python }
+ }
+ channel env_arg_name_1 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "import sys
+return \"package.houdini.py%d_%d\" % (sys.version_info.major, sys.version_info.minor)" language = python }
+ }
+ channel env_arg_val_1 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "\"~=\" + hou.applicationVersionString()" language = python }
+ }
+ channel val_jsn_3 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "node = hou.pwd()
+
+start, end, inc = node.parmTuple('f').eval()
+if int(start) == start and int(end) == end and int(inc) == inc:
+ start, end, inc = int(start), int(end), int(inc)
+
+frames = []
+assert start <= end
+assert inc > 0
+
+while start <= end:
+ frames.append(start)
+ start += inc
+
+return repr(frames)" language = python }
+ }
+ channel val_jsn_4 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "import json
+n = hou.pwd()
+return json.dumps({'cpu': {'min': n.evalParm('res_cpucountx'),
+ 'pref': n.evalParm('res_cpucounty')},
+ 'cmem': {'min': n.evalParm('res_cpumemx'),
+ 'pref': n.evalParm('res_cpumemy')}})
+" language = python }
+ }
+ channel val_jsn_5 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "import json
+n = hou.pwd()
+return json.dumps({'cpu': {'min': n.evalParm('res_m_cpucountx'),
+ 'pref': n.evalParm('res_m_cpucounty')},
+ 'cmem': {'min': n.evalParm('res_m_cpumemx'),
+ 'pref': n.evalParm('res_m_cpumemy')}})
+" language = python }
+ }
+ channel val_int_2 {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"framechunk_size\") }
+ }
+ channel sch_ip {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"127.0.0.1\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../sch_ip\") }
+ }
+ channel sch_port {
+ lefttype = extend
+ righttype = extend
+ default = 1384
+ flags = 0
+ segment { length = 0 value = 1384 1384 expr = ch(\"../sch_port\") }
+ }
+ channel brd_ip {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"0.0.0.0\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../brd_ip\") }
+ }
+ channel brd_port {
+ lefttype = extend
+ righttype = extend
+ default = 34305
+ flags = 0
+ segment { length = 0 value = 34305 34305 expr = ch(\"../brd_port\") }
+ }
+ channel brd_timeout {
+ lefttype = extend
+ righttype = extend
+ default = 15
+ flags = 0
+ segment { length = 0 value = 15 15 expr = ch(\"../brd_timeout\") }
+ }
+ channel brd_identifier {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"lifeblood_scheduler\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../brd_identifier\") }
+ }
+ channel broadcast_listen {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../broadcast_listen\") }
+ }
+ channel node_name {
+ lefttype = extend
+ righttype = extend
+ defaultString = "\"IN KARMA\""
+ flags = 0
+ segment { length = 0 expr = chs(\"../node_name\") }
+ }
+ channel task_name {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"$OS\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../task_name\") }
+ }
+ channel priority {
+ lefttype = extend
+ righttype = extend
+ default = 50
+ flags = 0
+ segment { length = 0 value = 50 50 expr = ch(\"../priority\") }
+ }
+ channel f1 {
+ lefttype = extend
+ righttype = extend
+ default = 1
+ flags = 0
+ segment { length = 0 value = 1 1 expr = ch(\"../f1\") }
+ }
+ channel f2 {
+ lefttype = extend
+ righttype = extend
+ default = 240
+ flags = 0
+ segment { length = 0 value = 240 240 expr = ch(\"../f2\") }
+ }
+ channel f3 {
+ lefttype = extend
+ righttype = extend
+ default = 1
+ flags = 0
+ segment { length = 0 value = 1 1 expr = ch(\"../f3\") }
+ }
+ channel framechunk_size {
+ lefttype = extend
+ righttype = extend
+ default = 10
+ flags = 0
+ segment { length = 0 value = 10 10 expr = ch(\"../framechunk_size\") }
+ }
+ channel roppath {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { length = 0 expr = chsop(\"../roppath\") }
+ }
+ channel res_cpucountx {
+ lefttype = extend
+ righttype = extend
+ default = 2
+ flags = 0
+ segment { length = 0 value = 2 2 expr = ch(\"../res_cpucountx\") }
+ }
+ channel res_cpucounty {
+ lefttype = extend
+ righttype = extend
+ default = 4
+ flags = 0
+ segment { length = 0 value = 4 4 expr = ch(\"../res_cpucounty\") }
+ }
+ channel res_cpumemx {
+ lefttype = extend
+ righttype = extend
+ default = 0.5
+ flags = 0
+ segment { length = 0 value = 0.5 0.5 expr = ch(\"../res_cpumemx\") }
+ }
+ channel res_cpumemy {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../res_cpumemy\") }
+ }
+ channel res_m_cpucountx {
+ lefttype = extend
+ righttype = extend
+ default = 2
+ flags = 0
+ segment { length = 0 value = 2 2 expr = ch(\"../res_m_cpucountx\") }
+ }
+ channel res_m_cpucounty {
+ lefttype = extend
+ righttype = extend
+ default = 4
+ flags = 0
+ segment { length = 0 value = 4 4 expr = ch(\"../res_m_cpucounty\") }
+ }
+ channel res_m_cpumemx {
+ lefttype = extend
+ righttype = extend
+ default = 0.5
+ flags = 0
+ segment { length = 0 value = 0.5 0.5 expr = ch(\"../res_m_cpumemx\") }
+ }
+ channel res_m_cpumemy {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../res_m_cpumemy\") }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+execute [ 0 locks=0 ] ( 0 )
+renderdialog [ 0 locks=0 ] ( 0 )
+_hidden [ 0 locks=0 ] ( 0 )
+submit [ 0 locks=0 ] ( 0 )
+sch_ip [ 0 locks=0 ] ( [ sch_ip 127.0.0.1 ] )
+sch_port [ 0 locks=0 ] ( [ sch_port 1384 ] )
+broadcast_parameters [ 0 locks=0 ] ( 0 )
+brd_ip [ 0 locks=0 ] ( [ brd_ip 0.0.0.0 ] )
+brd_port [ 0 locks=0 ] ( [ brd_port 34305 ] )
+brd_timeout [ 0 locks=0 ] ( [ brd_timeout 15 ] )
+brd_identifier [ 0 locks=0 ] ( [ brd_identifier lifeblood_scheduler ] )
+broadcast_listen [ 0 locks=0 ] ( [ broadcast_listen 0 ] )
+node_name [ 0 locks=0 ] ( [ node_name "" ] )
+task_name [ 0 locks=0 ] ( [ task_name $OS ] )
+priority [ 0 locks=0 ] ( [ priority 50 ] )
+folder0 [ 0 locks=0 ] ( 0 0 )
+attribs [ 0 locks=0 ] ( 6 )
+env_resolver_name [ 0 locks=0 ] ( StandardEnvironmentResolver )
+env_resolver_args [ 0 locks=0 ] ( 2 )
+enable_0 [ 0 locks=0 ] ( "on" )
+attr_name_0 [ 0 locks=0 ] ( hipfile )
+attr_type_0 [ 0 locks=0 ] ( "str" )
+val_int_0 [ 0 locks=0 ] ( 0 )
+val_flt_0 [ 0 locks=0 ] ( 0 )
+val_str_0 [ 0 locks=0 ] ( $HIPFILE )
+val_jsn_0 [ 0 locks=0 ] ( "" )
+val_bln_0 [ 0 locks=0 ] ( "off" )
+val_lst_0 [ 0 locks=0 ] ( 0 )
+env_arg_name_0 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ env_arg_name_0 "" ] )
+env_arg_val_0 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ env_arg_val_0 "" ] )
+env_arg_name_1 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ env_arg_name_1 "" ] )
+env_arg_val_1 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ env_arg_val_1 "" ] )
+_hidden2 [ 0 locks=0 ] ( 0 )
+broadcast_parameters2 [ 0 locks=0 ] ( 0 )
+sepparm [ 0 locks=0 ] ( )
+f [ 0 locks=0 ] ( [ f1 0 ] [ f2 0 ] [ f3 1 ] )
+framechunk_size [ 0 locks=0 ] ( [ framechunk_size 10 ] )
+roppath [ 0 locks=0 ] ( [ roppath "" ] )
+resmanagement_group [ 0 locks=0 ] ( 0 0 0 )
+resmanagement [ 0 locks=0 ] ( 1 )
+res_cpucount [ 0 locks=0 ] ( [ res_cpucountx 2 ] [ res_cpucounty 4 ] )
+res_cpumem [ 0 locks=0 ] ( [ res_cpumemx 0.5 ] [ res_cpumemy 0 ] )
+res_gpucount [ 0 locks=0 ] ( 0 0 )
+res_gpumem [ 0 locks=0 ] ( 0 0 )
+resmanagement_mantra [ 0 locks=0 ] ( 0 )
+res_m_cpucount [ 0 locks=0 ] ( [ res_m_cpucountx 2 ] [ res_m_cpucounty 4 ] )
+res_m_cpumem [ 0 locks=0 ] ( [ res_m_cpumemx 0.5 ] [ res_m_cpumemy 0 ] )
+res_m_gpucount [ 0 locks=0 ] ( 0 0 )
+res_m_gpumem [ 0 locks=0 ] ( 0 0 )
+enable_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "on" )
+attr_name_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( hipdriver )
+attr_type_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "str" )
+val_int_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_flt_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_str_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( `chsop(\"roppath\")` )
+val_jsn_1 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( "" )
+val_bln_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "off" )
+val_lst_1 [ 0 locks=0 ] ( 0 )
+enable_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "on" )
+attr_name_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( framechunk_size )
+attr_type_2 [ 8 locks=0 autoscope=0 autosel=4294967295 ] ( "int" )
+val_int_2 [ 8 locks=0 autoscope=0 autosel=4294967295 ] ( [ val_int_2 0 ] )
+val_flt_2 [ 8 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_str_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "" )
+val_jsn_2 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( "" )
+val_bln_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "off" )
+val_lst_2 [ 0 locks=0 ] ( 0 )
+enable_3 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "on" )
+attr_name_3 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( frames )
+attr_type_3 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "json" )
+val_int_3 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_flt_3 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_str_3 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "" )
+val_jsn_3 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ val_jsn_3 "" ] )
+val_bln_3 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "off" )
+val_lst_3 [ 0 locks=0 ] ( 0 )
+enable_4 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "on" )
+attr_name_4 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( requirements )
+attr_type_4 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "json" )
+val_int_4 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_flt_4 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_str_4 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "" )
+val_jsn_4 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ val_jsn_4 "" ] )
+val_bln_4 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "off" )
+val_lst_4 [ 0 locks=0 ] ( 0 )
+enable_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "on" )
+attr_name_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( requirements_render )
+attr_type_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "json" )
+val_int_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_flt_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_str_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "" )
+val_jsn_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( [ val_jsn_5 "" ] )
+val_bln_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "off" )
+val_lst_5 [ 0 locks=0 ] ( 0 )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":""
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.net"
+Content-Type: text/plain
+
+1
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY--
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/Contents.modtimes b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/Contents.modtimes
new file mode 100644
index 00000000..be1dc545
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/Contents.modtimes
@@ -0,0 +1,4 @@
+{
+ "hdaroot/lifeblood_submitter.def":1730819987,
+ "hdaroot.def":1730819995
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/Sections.list b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/Sections.list
new file mode 100644
index 00000000..49f2c152
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Contents.dir/Sections.list
@@ -0,0 +1,2 @@
+""
+Contents.mime Contents.mime
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/CreateScript b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/CreateScript
new file mode 100644
index 00000000..5262c870
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/CreateScript
@@ -0,0 +1,14 @@
+# Automatically generated script
+\set noalias = 1
+#
+# Creation script for lifeblood::lifeblood_karma_submitter::1.0 operator
+#
+
+if ( "$arg1" == "" ) then
+ echo This script is intended as a creation script
+ exit
+endif
+
+# Node $arg1 (lifeblood::Driver/lifeblood_karma_submitter::1.0)
+opexprlanguage -s hscript $arg1
+opuserdata -n '___Version___' -v '' $arg1
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/DialogScript b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/DialogScript
new file mode 100644
index 00000000..d38bef08
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/DialogScript
@@ -0,0 +1,280 @@
+# Dialog script for lifeblood::lifeblood_karma_submitter::1.0 automatically generated
+
+{
+ name lifeblood::lifeblood_karma_submitter::1.0
+ script lifeblood::lifeblood_karma_submitter::1.0
+ label "Lifeblood Karma Submitter"
+
+ help {
+ ""
+ }
+
+ inputlabel 1 "Input #1"
+
+ parm {
+ name "execute"
+ baseparm
+ label "Render"
+ invisible
+ joinnext
+ export none
+ }
+ parm {
+ name "renderdialog"
+ baseparm
+ label "Controls..."
+ nolabel
+ invisible
+ export none
+ }
+ import {
+ label submitter
+ source "op:./lifeblood_submitter"
+ enable 1
+
+ parm {
+ name "submit"
+ label "create task"
+ type button
+ default { "0" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_token" "submit" }
+ parmtag { "script_callback" "hou.phm().submit_btn_callback(hou.pwd())" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "sch_ip"
+ label "ip"
+ type string
+ joinnext
+ default { "127.0.0.1" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "sch_ip" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "sch_port"
+ label "port"
+ type integer
+ nolabel
+ default { "1384" }
+ range { 0 10 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "sch_port" }
+ parmtag { "script_callback_language" "python" }
+ }
+ groupcollapsible {
+ name "folder2"
+ label "broadcast parameters"
+ grouptag { "import_source" "op:./lifeblood_submitter" }
+ grouptag { "import_token" "broadcast_parameters2:broadcast parameters" }
+
+ parm {
+ name "brd_ip"
+ label "broadcast ip"
+ type string
+ joinnext
+ default { "0.0.0.0" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "brd_ip" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "brd_port"
+ label "port"
+ type integer
+ nolabel
+ default { "34305" }
+ range { 0 10 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "brd_port" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "brd_timeout"
+ label "timeout (sec)"
+ type integer
+ default { "15" }
+ range { 1! 20 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "brd_timeout" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "brd_identifier"
+ label "identifier"
+ type string
+ default { "lifeblood_scheduler" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "brd_identifier" }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ parm {
+ name "broadcast_listen"
+ label "Listen to Scheduler's broadcast to get ip and port"
+ type button
+ default { "0" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "broadcast_listen" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "node_name"
+ label "node name"
+ type string
+ default { "IN KARMA" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "node_name" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "task_name"
+ label "task name"
+ type string
+ default { "$OS" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "task_name" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "priority"
+ label "task group priority"
+ type float
+ default { "50" }
+ range { 0! 100 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "priority" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "sepparm"
+ label "Separator"
+ type separator
+ default { "" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "sepparm" }
+ }
+ parm {
+ name "f"
+ label "Start/End/Inc"
+ type integer
+ size 3
+ default { [ "$FSTART" hscript-expr ] [ "$FEND" hscript-expr ] "1" }
+ range { -1 1 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "f" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "framechunk_size"
+ label "Frame Chunk Size"
+ type integer
+ default { "10" }
+ help "number of frames per single ifd generation task"
+ range { 1! 20 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "framechunk_size" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "roppath"
+ label "Karma or USDrender Node To Render"
+ type oppath
+ default { "" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "roppath" }
+ parmtag { "opfilter" "!!ROP!!" }
+ parmtag { "oprelative" "." }
+ parmtag { "script_callback_language" "python" }
+ }
+ group {
+ name "folder3"
+ label "Resource Requirements"
+ grouptag { "import_source" "op:./lifeblood_submitter" }
+ grouptag { "import_token" "resmanagement_group:Resource Requirements" }
+
+ groupsimple {
+ name "folder6"
+ label "USD Generation"
+ grouptag { "import_source" "op:./lifeblood_submitter" }
+ grouptag { "import_token" "resmanagement:USD Generation" }
+
+ parm {
+ name "res_cpucount"
+ label "Cpu cores (min/pref)"
+ type vector2
+ size 2
+ default { "2" "4" }
+ range { 0.1! 32 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "res_cpucount" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_cpumem"
+ label "Cpu RAM GB (min/pref)"
+ type vector2
+ size 2
+ default { "0.5" "0.1" }
+ range { 0.1! 128 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "res_cpumem" }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ groupsimple {
+ name "folder7"
+ label "Karma Rendering"
+ grouptag { "import_source" "op:./lifeblood_submitter" }
+ grouptag { "import_token" "resmanagement_mantra:Karma Rendering" }
+
+ parm {
+ name "res_m_cpucount"
+ label "Cpu cores (min/pref)"
+ type vector2
+ size 2
+ default { "2" "4" }
+ range { 0.1! 32 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "res_m_cpucount" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_m_cpumem"
+ label "Cpu RAM GB (min/pref)"
+ type vector2
+ size 2
+ default { "0.5" "0.1" }
+ range { 0.1! 128 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "res_m_cpumem" }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ }
+
+ }
+
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/ExtraFileOptions b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/ExtraFileOptions
new file mode 100644
index 00000000..8d069a1a
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/ExtraFileOptions
@@ -0,0 +1,22 @@
+{
+ "PythonModule/Cursor":{
+ "type":"intarray",
+ "value":[3,24]
+ },
+ "PythonModule/IsExpr":{
+ "type":"bool",
+ "value":false
+ },
+ "PythonModule/IsPython":{
+ "type":"bool",
+ "value":true
+ },
+ "PythonModule/IsScript":{
+ "type":"bool",
+ "value":true
+ },
+ "PythonModule/Source":{
+ "type":"string",
+ "value":""
+ }
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Help b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Help
new file mode 100644
index 00000000..e69de29b
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/InternalFileOptions b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/InternalFileOptions
new file mode 100644
index 00000000..222988aa
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/InternalFileOptions
@@ -0,0 +1,10 @@
+{
+ "nodeconntype":{
+ "type":"bool",
+ "value":false
+ },
+ "nodeparmtype":{
+ "type":"bool",
+ "value":false
+ }
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/PythonModule b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/PythonModule
new file mode 100644
index 00000000..6aac6782
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/PythonModule
@@ -0,0 +1,24 @@
+import hou
+
+
+def submit_btn_callback(node):
+ # validate
+ ropnode = node.parm('roppath').evalAsNode()
+ if ropnode is None:
+ hou.ui.displayMessage(
+ 'USDRender node is not selected',
+ severity=hou.severityType.Error,
+ title='you forgot to select node to render'
+ )
+ return
+ if (rop_type_name := ropnode.type().nameComponents()[2]) not in ('usdrender_rop', 'karma'):
+ hou.ui.displayMessage(
+ f'Specify a USDRender node to render. instead I see "{rop_type_name}"',
+ severity=hou.severityType.Error,
+ title='Invalid node type to render'
+ )
+ return
+
+ # submit
+ inner = node.node('lifeblood_submitter')
+ inner.hdaModule().submit_button_callback(inner)
\ No newline at end of file
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Sections.list b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Sections.list
new file mode 100644
index 00000000..2cd14533
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Sections.list
@@ -0,0 +1,10 @@
+""
+DialogScript DialogScript
+CreateScript CreateScript
+InternalFileOptions InternalFileOptions
+Contents.gz Contents.gz
+TypePropertiesOptions TypePropertiesOptions
+Help Help
+Tools.shelf Tools.shelf
+PythonModule PythonModule
+ExtraFileOptions ExtraFileOptions
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Tools.shelf b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Tools.shelf
new file mode 100644
index 00000000..e502ee9f
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/Tools.shelf
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+ ROP
+
+
+ $HDA_TABLE_AND_NAME
+
+ Lifeblood
+
+
+
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/TypePropertiesOptions b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/TypePropertiesOptions
new file mode 100644
index 00000000..a6d52acf
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_karma_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__karma__submitter_8_81.0/TypePropertiesOptions
@@ -0,0 +1,14 @@
+CheckExternal := 1;
+ContentsCompressionType := 1;
+ForbidOutsideParms := 1;
+GzipContents := 1;
+LockContents := 1;
+MakeDefault := 1;
+ParmsFromVfl := 0;
+PrefixDroppedParmLabel := 0;
+PrefixDroppedParmName := 0;
+SaveCachedCode := 0;
+SaveIcon := 1;
+SaveSpareParms := 0;
+UnlockOnCreate := 0;
+UseDSParms := 1;
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/INDEX__SECTION b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/INDEX__SECTION
new file mode 100644
index 00000000..08da6714
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/INDEX__SECTION
@@ -0,0 +1,14 @@
+Operator: lifeblood::lifeblood_mantra_submitter::1.0
+Label: Lifeblood Mantra Submitter
+Path: oplib:/lifeblood::Driver/lifeblood_mantra_submitter::1.0?lifeblood::Driver/lifeblood_mantra_submitter::1.0
+Icon: opdef:/lifeblood::Driver/lifeblood_submitter::1.0.0?IconSVG
+Table: Driver
+License:
+Extra:
+User:
+Inputs: 0 to 1
+Subnet: true
+Python: false
+Empty: false
+Modified: Tue Nov 5 19:08:56 2024
+
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/Sections.list b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/Sections.list
new file mode 100644
index 00000000..3295e5f4
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/Sections.list
@@ -0,0 +1,4 @@
+""
+INDEX__SECTION INDEX_SECTION
+houdini.hdalibrary houdini.hdalibrary
+lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0 lifeblood::Driver/lifeblood_mantra_submitter::1.0
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/houdini.hdalibrary b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/houdini.hdalibrary
new file mode 100644
index 00000000..e69de29b
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/.OPdummydefs b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/.OPdummydefs
new file mode 100644
index 00000000..c158d5d7
Binary files /dev/null and b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/.OPdummydefs differ
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/.OPfallbacks b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/.OPfallbacks
new file mode 100644
index 00000000..9ae3319a
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/.OPfallbacks
@@ -0,0 +1,2 @@
+lifeblood::Driver/lifeblood_submitter::1.0.0 /home/xapkohheh/git/dev_fhs/projects_py/lifeblood/dcc_plugins/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda
+lifeblood::Driver/lifeblood_submitter::1.0.0 otls/Driver-lifeblood_submitter-1.0.0.hda
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/Contents.createtimes b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/Contents.createtimes
new file mode 100644
index 00000000..1b440e94
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/Contents.createtimes
@@ -0,0 +1,4 @@
+{
+ "hdaroot/lifeblood_submitter.def":1730829848,
+ "hdaroot.def":1730829942
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/Contents.mime b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/Contents.mime
new file mode 100644
index 00000000..562e5fec
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/Contents.mime
@@ -0,0 +1,879 @@
+MIME-Version: 1.0
+Content-Type: multipart/mixed; boundary="HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY"
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename=".OPfallbacks"
+Content-Type: application/external-reference
+
+.OPfallbacks
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename=".OPdummydefs"
+Content-Type: application/external-reference
+
+.OPdummydefs
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="node_type"
+Content-Type: text/plain
+
+Driver
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.init"
+Content-Type: text/plain
+
+type = lifeblood::lifeblood_mantra_submitter::1.0
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.def"
+Content-Type: text/plain
+
+comment ""
+position -2.61601 -1.75948
+connectornextid 0
+flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on
+outputsNamed3
+{
+}
+inputsNamed3
+{
+}
+inputs
+{
+}
+stat
+{
+ create -1
+ modify -1
+ author xapkohheh@localhost
+ access 0777
+}
+color UT_Color RGB 0.8 0.8 0.8
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":""
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.inp"
+Content-Type: text/plain
+
+1
+0 0 6 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT"
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.init"
+Content-Type: text/plain
+
+type = lifeblood::lifeblood_submitter::1.0.0
+matchesdef = 1
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.def"
+Content-Type: text/plain
+
+comment ""
+position 0 5.2176
+connectornextid 0
+flags = lock off model off template off footprint off xray off bypass off display on render on highlight off unload off savedata off compress on colordefault on exposed on
+outputsNamed3
+{
+}
+inputsNamed3
+{
+}
+inputs
+{
+}
+stat
+{
+ create -1
+ modify -1
+ author xapkohheh@localhost
+ access 0777
+}
+color UT_Color RGB 0.8 0.8 0.8
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.spareparmdef"
+Content-Type: text/plain
+
+ group {
+ name "_hidden2"
+ label "_hidden"
+ invisibletab
+
+ parm {
+ name "execute"
+ baseparm
+ label "Render"
+ joinnext
+ export none
+ }
+ parm {
+ name "renderdialog"
+ baseparm
+ label "Controls..."
+ nolabel
+ export none
+ }
+ }
+
+ parm {
+ name "submit"
+ baseparm
+ label "create task"
+ export none
+ }
+ parm {
+ name "sch_ip"
+ baseparm
+ label "ip"
+ joinnext
+ export none
+ }
+ parm {
+ name "sch_port"
+ baseparm
+ label "port"
+ nolabel
+ export none
+ }
+ groupcollapsible {
+ name "broadcast_parameters2"
+ label "broadcast parameters"
+
+ parm {
+ name "brd_ip"
+ baseparm
+ label "broadcast ip"
+ joinnext
+ export none
+ }
+ parm {
+ name "brd_port"
+ baseparm
+ label "port"
+ nolabel
+ export none
+ }
+ parm {
+ name "brd_timeout"
+ baseparm
+ label "timeout (sec)"
+ export none
+ }
+ parm {
+ name "brd_identifier"
+ baseparm
+ label "identifier"
+ export none
+ }
+ }
+
+ parm {
+ name "broadcast_listen"
+ baseparm
+ label "Listen to Scheduler's broadcast to get ip and port"
+ export none
+ }
+ parm {
+ name "node_name"
+ baseparm
+ label "node name"
+ export none
+ }
+ parm {
+ name "task_name"
+ baseparm
+ label "task name"
+ export none
+ }
+ parm {
+ name "priority"
+ baseparm
+ label "task group priority"
+ export none
+ }
+ parm {
+ name "sepparm"
+ label "Separator"
+ type separator
+ default { "" }
+ }
+ parm {
+ name "f"
+ label "Start/End/Inc"
+ type integer
+ size 3
+ default { "$FSTART" "$FEND" "1" }
+ range { -1 1 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "framechunk_size"
+ label "Frame Chunk Size"
+ type integer
+ default { "10" }
+ help "number of frames per single ifd generation task"
+ range { 1! 20 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "roppath"
+ label "Mantra Node To Render"
+ type oppath
+ default { "" }
+ parmtag { "opfilter" "!!ROP!!" }
+ parmtag { "oprelative" "." }
+ parmtag { "script_callback_language" "python" }
+ }
+ group {
+ name "resmanagement_group"
+ label "Resource Requirements"
+
+ groupsimple {
+ name "resmanagement"
+ label "IFD Generation"
+
+ parm {
+ name "res_cpucount"
+ label "Cpu cores (min/pref)"
+ type vector2
+ size 2
+ default { "2" "4" }
+ range { 0.1! 32 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_cpumem"
+ label "Cpu RAM GB (min/pref)"
+ type vector2
+ size 2
+ default { "0.5" "0" }
+ range { 0.1! 128 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_gpucount"
+ label "Gpu count (min/pref)"
+ type vector2
+ invisible
+ size 2
+ default { "0" "0" }
+ range { 0.1! 2 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_gpumem"
+ label "Gpu RAM GB (min/pref)"
+ type vector2
+ invisible
+ size 2
+ default { "0" "0" }
+ range { 0.1! 16 }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ groupsimple {
+ name "resmanagement_mantra"
+ label "Mantra Rendering"
+
+ parm {
+ name "res_m_cpucount"
+ label "Cpu cores (min/pref)"
+ type vector2
+ size 2
+ default { "2" "4" }
+ range { 0.1! 32 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_m_cpumem"
+ label "Cpu RAM GB (min/pref)"
+ type vector2
+ size 2
+ default { "0.5" "0" }
+ range { 0.1! 128 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_m_gpucount"
+ label "Gpu count (min/pref)"
+ type vector2
+ invisible
+ size 2
+ default { "0" "0" }
+ range { 0.1! 2 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_m_gpumem"
+ label "Gpu RAM GB (min/pref)"
+ type vector2
+ invisible
+ size 2
+ default { "0" "0" }
+ range { 0.1! 16 }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ }
+
+ group {
+ name "resmanagement_group_1"
+ label "Attributes"
+
+ multiparm {
+ name "attribs"
+ label "attributes"
+ baseparm
+ default 1
+ parmtag { "multistartoffset" "0" }
+
+ parm {
+ name "enable_#"
+ baseparm
+ label "name"
+ joinnext
+ export none
+ }
+ parm {
+ name "attr_name_#"
+ baseparm
+ label "name"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "attr_type_#"
+ baseparm
+ label "type"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "val_int_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "val_flt_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "val_str_#"
+ baseparm
+ label "value"
+ nolabel
+ export none
+ }
+ parm {
+ name "val_jsn_#"
+ baseparm
+ label "value"
+ nolabel
+ export none
+ }
+ parm {
+ name "val_bln_#"
+ baseparm
+ label "value"
+ nolabel
+ export none
+ }
+ multiscroll {
+ name "val_lst_#"
+ label "list values count"
+ baseparm
+ hidewhen "{ attr_type_# != list }"
+ parmtag { "multistartoffset" "0" }
+
+ parm {
+ name "lst_attr_type_#_#"
+ baseparm
+ label "type"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "lst_val_int_#_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "lst_val_flt_#_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "lst_val_str_#_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "lst_val_bln_#_#"
+ baseparm
+ label "value"
+ nolabel
+ export none
+ }
+ }
+
+ }
+
+ }
+
+ group {
+ name "resmanagement_group_2"
+ label "Environment resolver"
+
+ parm {
+ name "env_resolver_name"
+ baseparm
+ label "Environment Resolver Name"
+ export none
+ }
+ multiparm {
+ name "env_resolver_args"
+ label "environment resolver parameters"
+ baseparm
+ default 2
+ parmtag { "multistartoffset" "0" }
+
+ parm {
+ name "env_arg_name_#"
+ baseparm
+ label "name"
+ joinnext
+ export none
+ }
+ parm {
+ name "env_arg_val_#"
+ baseparm
+ label "value"
+ export none
+ }
+ }
+
+ }
+
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.chn"
+Content-Type: text/plain
+
+{
+ channel env_arg_name_0 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = \"user\" language = python }
+ }
+ channel env_arg_val_0 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "import getpass
+return getpass.getuser()" language = python }
+ }
+ channel env_arg_name_1 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "import sys
+return \"package.houdini.py%d_%d\" % (sys.version_info.major, sys.version_info.minor)" language = python }
+ }
+ channel env_arg_val_1 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "\"~=\" + hou.applicationVersionString()" language = python }
+ }
+ channel val_jsn_3 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "node = hou.pwd()
+
+start, end, inc = node.parmTuple('f').eval()
+if int(start) == start and int(end) == end and int(inc) == inc:
+ start, end, inc = int(start), int(end), int(inc)
+
+frames = []
+assert start <= end
+assert inc > 0
+
+while start <= end:
+ frames.append(start)
+ start += inc
+
+return repr(frames)" language = python }
+ }
+ channel val_jsn_4 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "import json
+n = hou.pwd()
+return json.dumps({'cpu': {'min': n.evalParm('res_cpucountx'),
+ 'pref': n.evalParm('res_cpucounty')},
+ 'cmem': {'min': n.evalParm('res_cpumemx'),
+ 'pref': n.evalParm('res_cpumemy')}})
+" language = python }
+ }
+ channel val_jsn_5 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "import json
+n = hou.pwd()
+return json.dumps({'cpu': {'min': n.evalParm('res_m_cpucountx'),
+ 'pref': n.evalParm('res_m_cpucounty')},
+ 'cmem': {'min': n.evalParm('res_m_cpumemx'),
+ 'pref': n.evalParm('res_m_cpumemy')}})
+" language = python }
+ }
+ channel val_int_2 {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"framechunk_size\") }
+ }
+ channel sch_ip {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"127.0.0.1\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../sch_ip\") }
+ }
+ channel sch_port {
+ lefttype = extend
+ righttype = extend
+ default = 1384
+ flags = 0
+ segment { length = 0 value = 1384 1384 expr = ch(\"../sch_port\") }
+ }
+ channel brd_ip {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"0.0.0.0\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../brd_ip\") }
+ }
+ channel brd_port {
+ lefttype = extend
+ righttype = extend
+ default = 34305
+ flags = 0
+ segment { length = 0 value = 34305 34305 expr = ch(\"../brd_port\") }
+ }
+ channel brd_timeout {
+ lefttype = extend
+ righttype = extend
+ default = 15
+ flags = 0
+ segment { length = 0 value = 15 15 expr = ch(\"../brd_timeout\") }
+ }
+ channel brd_identifier {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"lifeblood_scheduler\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../brd_identifier\") }
+ }
+ channel broadcast_listen {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../broadcast_listen\") }
+ }
+ channel node_name {
+ lefttype = extend
+ righttype = extend
+ defaultString = "\"IN MANTRA\""
+ flags = 0
+ segment { length = 0 expr = chs(\"../node_name\") }
+ }
+ channel task_name {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"$OS\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../task_name\") }
+ }
+ channel priority {
+ lefttype = extend
+ righttype = extend
+ default = 50
+ flags = 0
+ segment { length = 0 value = 50 50 expr = ch(\"../priority\") }
+ }
+ channel f1 {
+ lefttype = extend
+ righttype = extend
+ default = 1
+ flags = 0
+ segment { length = 0 value = 1 1 expr = ch(\"../f1\") }
+ }
+ channel f2 {
+ lefttype = extend
+ righttype = extend
+ default = 240
+ flags = 0
+ segment { length = 0 value = 240 240 expr = ch(\"../f2\") }
+ }
+ channel f3 {
+ lefttype = extend
+ righttype = extend
+ default = 1
+ flags = 0
+ segment { length = 0 value = 1 1 expr = ch(\"../f3\") }
+ }
+ channel framechunk_size {
+ lefttype = extend
+ righttype = extend
+ default = 10
+ flags = 0
+ segment { length = 0 value = 10 10 expr = ch(\"../framechunk_size\") }
+ }
+ channel roppath {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { length = 0 expr = chsop(\"../roppath\") }
+ }
+ channel res_cpucountx {
+ lefttype = extend
+ righttype = extend
+ default = 2
+ flags = 0
+ segment { length = 0 value = 2 2 expr = ch(\"../res_cpucountx\") }
+ }
+ channel res_cpucounty {
+ lefttype = extend
+ righttype = extend
+ default = 4
+ flags = 0
+ segment { length = 0 value = 4 4 expr = ch(\"../res_cpucounty\") }
+ }
+ channel res_cpumemx {
+ lefttype = extend
+ righttype = extend
+ default = 0.5
+ flags = 0
+ segment { length = 0 value = 0.5 0.5 expr = ch(\"../res_cpumemx\") }
+ }
+ channel res_cpumemy {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../res_cpumemy\") }
+ }
+ channel res_m_cpucountx {
+ lefttype = extend
+ righttype = extend
+ default = 2
+ flags = 0
+ segment { length = 0 value = 2 2 expr = ch(\"../res_m_cpucountx\") }
+ }
+ channel res_m_cpucounty {
+ lefttype = extend
+ righttype = extend
+ default = 4
+ flags = 0
+ segment { length = 0 value = 4 4 expr = ch(\"../res_m_cpucounty\") }
+ }
+ channel res_m_cpumemx {
+ lefttype = extend
+ righttype = extend
+ default = 0.5
+ flags = 0
+ segment { length = 0 value = 0.5 0.5 expr = ch(\"../res_m_cpumemx\") }
+ }
+ channel res_m_cpumemy {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../res_m_cpumemy\") }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+execute [ 0 locks=0 ] ( 0 )
+renderdialog [ 0 locks=0 ] ( 0 )
+_hidden [ 0 locks=0 ] ( 0 )
+submit [ 0 locks=0 ] ( 0 )
+sch_ip [ 0 locks=0 ] ( [ sch_ip 127.0.0.1 ] )
+sch_port [ 0 locks=0 ] ( [ sch_port 1384 ] )
+broadcast_parameters [ 0 locks=0 ] ( 0 )
+brd_ip [ 0 locks=0 ] ( [ brd_ip 0.0.0.0 ] )
+brd_port [ 0 locks=0 ] ( [ brd_port 34305 ] )
+brd_timeout [ 0 locks=0 ] ( [ brd_timeout 15 ] )
+brd_identifier [ 0 locks=0 ] ( [ brd_identifier lifeblood_scheduler ] )
+broadcast_listen [ 0 locks=0 ] ( [ broadcast_listen 0 ] )
+node_name [ 0 locks=0 ] ( [ node_name "" ] )
+task_name [ 0 locks=0 ] ( [ task_name $OS ] )
+priority [ 0 locks=0 ] ( [ priority 50 ] )
+folder0 [ 0 locks=0 ] ( 0 0 )
+attribs [ 0 locks=0 ] ( 6 )
+env_resolver_name [ 0 locks=0 ] ( StandardEnvironmentResolver )
+env_resolver_args [ 0 locks=0 ] ( 2 )
+enable_0 [ 0 locks=0 ] ( "on" )
+attr_name_0 [ 0 locks=0 ] ( hipfile )
+attr_type_0 [ 0 locks=0 ] ( "str" )
+val_int_0 [ 0 locks=0 ] ( 0 )
+val_flt_0 [ 0 locks=0 ] ( 0 )
+val_str_0 [ 0 locks=0 ] ( $HIPFILE )
+val_jsn_0 [ 0 locks=0 ] ( "" )
+val_bln_0 [ 0 locks=0 ] ( "off" )
+val_lst_0 [ 0 locks=0 ] ( 0 )
+env_arg_name_0 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ env_arg_name_0 "" ] )
+env_arg_val_0 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ env_arg_val_0 "" ] )
+env_arg_name_1 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ env_arg_name_1 "" ] )
+env_arg_val_1 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ env_arg_val_1 "" ] )
+_hidden2 [ 0 locks=0 ] ( 0 )
+broadcast_parameters2 [ 0 locks=0 ] ( 0 )
+sepparm [ 0 locks=0 ] ( )
+f [ 0 locks=0 ] ( [ f1 0 ] [ f2 0 ] [ f3 1 ] )
+framechunk_size [ 0 locks=0 ] ( [ framechunk_size 10 ] )
+roppath [ 0 locks=0 ] ( [ roppath "" ] )
+resmanagement_group [ 0 locks=0 ] ( 0 0 0 )
+resmanagement [ 0 locks=0 ] ( 1 )
+res_cpucount [ 0 locks=0 ] ( [ res_cpucountx 2 ] [ res_cpucounty 4 ] )
+res_cpumem [ 0 locks=0 ] ( [ res_cpumemx 0.5 ] [ res_cpumemy 0 ] )
+res_gpucount [ 0 locks=0 ] ( 0 0 )
+res_gpumem [ 0 locks=0 ] ( 0 0 )
+resmanagement_mantra [ 0 locks=0 ] ( 0 )
+res_m_cpucount [ 0 locks=0 ] ( [ res_m_cpucountx 2 ] [ res_m_cpucounty 4 ] )
+res_m_cpumem [ 0 locks=0 ] ( [ res_m_cpumemx 0.5 ] [ res_m_cpumemy 0 ] )
+res_m_gpucount [ 0 locks=0 ] ( 0 0 )
+res_m_gpumem [ 0 locks=0 ] ( 0 0 )
+enable_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "on" )
+attr_name_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( hipdriver )
+attr_type_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "str" )
+val_int_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_flt_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_str_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( `chsop(\"roppath\")` )
+val_jsn_1 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( "" )
+val_bln_1 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "off" )
+val_lst_1 [ 0 locks=0 ] ( 0 )
+enable_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "on" )
+attr_name_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( framechunk_size )
+attr_type_2 [ 8 locks=0 autoscope=0 autosel=4294967295 ] ( "int" )
+val_int_2 [ 8 locks=0 autoscope=0 autosel=4294967295 ] ( [ val_int_2 0 ] )
+val_flt_2 [ 8 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_str_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "" )
+val_jsn_2 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( "" )
+val_bln_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "off" )
+val_lst_2 [ 0 locks=0 ] ( 0 )
+enable_3 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "on" )
+attr_name_3 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( frames )
+attr_type_3 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "json" )
+val_int_3 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_flt_3 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_str_3 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "" )
+val_jsn_3 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ val_jsn_3 "" ] )
+val_bln_3 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "off" )
+val_lst_3 [ 0 locks=0 ] ( 0 )
+enable_4 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "on" )
+attr_name_4 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( requirements )
+attr_type_4 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "json" )
+val_int_4 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_flt_4 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_str_4 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "" )
+val_jsn_4 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ val_jsn_4 "" ] )
+val_bln_4 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "off" )
+val_lst_4 [ 0 locks=0 ] ( 0 )
+enable_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "on" )
+attr_name_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( requirements_render )
+attr_type_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "json" )
+val_int_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_flt_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_str_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "" )
+val_jsn_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( [ val_jsn_5 "" ] )
+val_bln_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "off" )
+val_lst_5 [ 0 locks=0 ] ( 0 )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":""
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.net"
+Content-Type: text/plain
+
+1
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY--
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/Contents.modtimes b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/Contents.modtimes
new file mode 100644
index 00000000..8ba46e1c
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/Contents.modtimes
@@ -0,0 +1,4 @@
+{
+ "hdaroot/lifeblood_submitter.def":1730830199,
+ "hdaroot.def":1730830128
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/Sections.list b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/Sections.list
new file mode 100644
index 00000000..49f2c152
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Contents.dir/Sections.list
@@ -0,0 +1,2 @@
+""
+Contents.mime Contents.mime
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/CreateScript b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/CreateScript
new file mode 100644
index 00000000..c5a0249f
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/CreateScript
@@ -0,0 +1,14 @@
+# Automatically generated script
+\set noalias = 1
+#
+# Creation script for lifeblood::lifeblood_mantra_submitter::1.0 operator
+#
+
+if ( "$arg1" == "" ) then
+ echo This script is intended as a creation script
+ exit
+endif
+
+# Node $arg1 (lifeblood::Driver/lifeblood_mantra_submitter::1.0)
+opexprlanguage -s hscript $arg1
+opuserdata -n '___Version___' -v '' $arg1
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/DialogScript b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/DialogScript
new file mode 100644
index 00000000..886412d6
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/DialogScript
@@ -0,0 +1,280 @@
+# Dialog script for lifeblood::lifeblood_mantra_submitter::1.0 automatically generated
+
+{
+ name lifeblood::lifeblood_mantra_submitter::1.0
+ script lifeblood::lifeblood_mantra_submitter::1.0
+ label "Lifeblood Mantra Submitter"
+
+ help {
+ ""
+ }
+
+ inputlabel 1 "Input #1"
+
+ parm {
+ name "execute"
+ baseparm
+ label "Render"
+ invisible
+ joinnext
+ export none
+ }
+ parm {
+ name "renderdialog"
+ baseparm
+ label "Controls..."
+ nolabel
+ invisible
+ export none
+ }
+ import {
+ label submitter
+ source "op:./lifeblood_submitter"
+ enable 1
+
+ parm {
+ name "submit"
+ label "create task"
+ type button
+ default { "0" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "submit" }
+ parmtag { "script_callback" "hou.phm().submit_btn_callback(hou.pwd())" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "sch_ip"
+ label "ip"
+ type string
+ joinnext
+ default { "127.0.0.1" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "sch_ip" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "sch_port"
+ label "port"
+ type integer
+ nolabel
+ default { "1384" }
+ range { 0 10 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "sch_port" }
+ parmtag { "script_callback_language" "python" }
+ }
+ groupcollapsible {
+ name "folder2"
+ label "broadcast parameters"
+ grouptag { "import_source" "op:./lifeblood_submitter" }
+ grouptag { "import_token" "broadcast_parameters2:broadcast parameters" }
+
+ parm {
+ name "brd_ip"
+ label "broadcast ip"
+ type string
+ joinnext
+ default { "0.0.0.0" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "brd_ip" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "brd_port"
+ label "port"
+ type integer
+ nolabel
+ default { "34305" }
+ range { 0 10 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "brd_port" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "brd_timeout"
+ label "timeout (sec)"
+ type integer
+ default { "15" }
+ range { 1! 20 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "brd_timeout" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "brd_identifier"
+ label "identifier"
+ type string
+ default { "lifeblood_scheduler" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "brd_identifier" }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ parm {
+ name "broadcast_listen"
+ label "Listen to Scheduler's broadcast to get ip and port"
+ type button
+ default { "0" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "broadcast_listen" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "node_name"
+ label "node name"
+ type string
+ default { "IN MANTRA" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "node_name" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "task_name"
+ label "task name"
+ type string
+ default { "$OS" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "task_name" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "priority"
+ label "task group priority"
+ type float
+ default { "50" }
+ range { 0! 100 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "priority" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "sepparm"
+ label "Separator"
+ type separator
+ default { "" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "sepparm" }
+ }
+ parm {
+ name "f"
+ label "Start/End/Inc"
+ type integer
+ size 3
+ default { [ "$FSTART" hscript-expr ] [ "$FEND" hscript-expr ] "1" }
+ range { -1 1 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "f" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "framechunk_size"
+ label "Frame Chunk Size"
+ type integer
+ default { "10" }
+ help "number of frames per single ifd generation task"
+ range { 1! 20 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "framechunk_size" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "roppath"
+ label "Mantra Node To Render"
+ type oppath
+ default { "" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "roppath" }
+ parmtag { "opfilter" "!!ROP!!" }
+ parmtag { "script_callback_language" "python" }
+ }
+ group {
+ name "folder3"
+ label "Resource Requirements"
+ grouptag { "import_source" "op:./lifeblood_submitter" }
+ grouptag { "import_token" "resmanagement_group:Resource Requirements" }
+
+ groupsimple {
+ name "folder6"
+ label "IFD Generation"
+ grouptag { "import_source" "op:./lifeblood_submitter" }
+ grouptag { "import_token" "resmanagement:IFD Generation" }
+
+ parm {
+ name "res_cpucount"
+ label "Cpu cores (min/pref)"
+ type vector2
+ size 2
+ default { "2" "4" }
+ range { 0.1! 32 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "res_cpucount" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_cpumem"
+ label "Cpu RAM GB (min/pref)"
+ type vector2
+ size 2
+ default { "0.5" "0.1" }
+ range { 0.1! 128 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "res_cpumem" }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ groupsimple {
+ name "folder7"
+ label "Mantra Rendering"
+ grouptag { "import_source" "op:./lifeblood_submitter" }
+ grouptag { "import_token" "resmanagement_mantra:Mantra Rendering" }
+
+ parm {
+ name "res_m_cpucount"
+ label "Cpu cores (min/pref)"
+ type vector2
+ size 2
+ default { "2" "4" }
+ range { 0.1! 32 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "res_m_cpucount" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_m_cpumem"
+ label "Cpu RAM GB (min/pref)"
+ type vector2
+ size 2
+ default { "0.5" "0.1" }
+ range { 0.1! 128 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "res_m_cpumem" }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ }
+
+ }
+
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/ExtraFileOptions b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/ExtraFileOptions
new file mode 100644
index 00000000..6caeb582
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/ExtraFileOptions
@@ -0,0 +1,22 @@
+{
+ "PythonModule/Cursor":{
+ "type":"intarray",
+ "value":[18,48]
+ },
+ "PythonModule/IsExpr":{
+ "type":"bool",
+ "value":false
+ },
+ "PythonModule/IsPython":{
+ "type":"bool",
+ "value":true
+ },
+ "PythonModule/IsScript":{
+ "type":"bool",
+ "value":true
+ },
+ "PythonModule/Source":{
+ "type":"string",
+ "value":""
+ }
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Help b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Help
new file mode 100644
index 00000000..e69de29b
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/InternalFileOptions b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/InternalFileOptions
new file mode 100644
index 00000000..222988aa
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/InternalFileOptions
@@ -0,0 +1,10 @@
+{
+ "nodeconntype":{
+ "type":"bool",
+ "value":false
+ },
+ "nodeparmtype":{
+ "type":"bool",
+ "value":false
+ }
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/PythonModule b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/PythonModule
new file mode 100644
index 00000000..b9f99293
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/PythonModule
@@ -0,0 +1,24 @@
+import hou
+
+
+def submit_btn_callback(node):
+ # validate
+ ropnode = node.parm('roppath').evalAsNode()
+ if ropnode is None:
+ hou.ui.displayMessage(
+ 'Mantra node is not selected',
+ severity=hou.severityType.Error,
+ title='you forgot to select node to render'
+ )
+ return
+ if (rop_type_name := ropnode.type().nameComponents()[2]) != 'ifd':
+ hou.ui.displayMessage(
+ f'Specify a Mantra node to render. instead I see "{rop_type_name}"',
+ severity=hou.severityType.Error,
+ title='Invalid node type to render'
+ )
+ return
+
+ # submit
+ inner = node.node('lifeblood_submitter')
+ inner.hdaModule().submit_button_callback(inner)
\ No newline at end of file
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Sections.list b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Sections.list
new file mode 100644
index 00000000..2cd14533
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Sections.list
@@ -0,0 +1,10 @@
+""
+DialogScript DialogScript
+CreateScript CreateScript
+InternalFileOptions InternalFileOptions
+Contents.gz Contents.gz
+TypePropertiesOptions TypePropertiesOptions
+Help Help
+Tools.shelf Tools.shelf
+PythonModule PythonModule
+ExtraFileOptions ExtraFileOptions
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Tools.shelf b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Tools.shelf
new file mode 100644
index 00000000..a05471f0
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/Tools.shelf
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+ ROP
+
+
+ $HDA_TABLE_AND_NAME
+
+ Lifeblood
+
+
+ Mantra
+
+
+
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/TypePropertiesOptions b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/TypePropertiesOptions
new file mode 100644
index 00000000..a6d52acf
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_mantra_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__mantra__submitter_8_81.0/TypePropertiesOptions
@@ -0,0 +1,14 @@
+CheckExternal := 1;
+ContentsCompressionType := 1;
+ForbidOutsideParms := 1;
+GzipContents := 1;
+LockContents := 1;
+MakeDefault := 1;
+ParmsFromVfl := 0;
+PrefixDroppedParmLabel := 0;
+PrefixDroppedParmName := 0;
+SaveCachedCode := 0;
+SaveIcon := 1;
+SaveSpareParms := 0;
+UnlockOnCreate := 0;
+UseDSParms := 1;
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/INDEX__SECTION b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/INDEX__SECTION
index 3e8e670b..63ebc068 100644
--- a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/INDEX__SECTION
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/INDEX__SECTION
@@ -1,5 +1,5 @@
Operator: lifeblood::lifeblood_submitter::1.0.0
-Label: Lifeblood Submitter
+Label: Lifeblood Generic Submitter
Path: oplib:/lifeblood::Driver/lifeblood_submitter::1.0.0?lifeblood::Driver/lifeblood_submitter::1.0.0
Icon: opdef:/lifeblood::Driver/lifeblood_submitter::1.0.0?IconSVG
Table: Driver
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/lifeblood_8_8Driver_1lifeblood__submitter_8_81.0.0/DialogScript b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/lifeblood_8_8Driver_1lifeblood__submitter_8_81.0.0/DialogScript
index 505215f7..0e2610a0 100644
--- a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/lifeblood_8_8Driver_1lifeblood__submitter_8_81.0.0/DialogScript
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/lifeblood_8_8Driver_1lifeblood__submitter_8_81.0.0/DialogScript
@@ -3,7 +3,7 @@
{
name lifeblood::lifeblood_submitter::1.0.0
script lifeblood::lifeblood_submitter::1.0.0
- label "Lifeblood Submitter"
+ label "Lifeblood Generic Submitter"
help {
""
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/lifeblood_8_8Driver_1lifeblood__submitter_8_81.0.0/Tools.shelf b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/lifeblood_8_8Driver_1lifeblood__submitter_8_81.0.0/Tools.shelf
index 31417775..e502ee9f 100644
--- a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/lifeblood_8_8Driver_1lifeblood__submitter_8_81.0.0/Tools.shelf
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda/lifeblood_8_8Driver_1lifeblood__submitter_8_81.0.0/Tools.shelf
@@ -12,7 +12,7 @@
$HDA_TABLE_AND_NAME
- Taskflow
+ Lifeblood
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/INDEX__SECTION b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/INDEX__SECTION
new file mode 100644
index 00000000..e74959a9
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/INDEX__SECTION
@@ -0,0 +1,14 @@
+Operator: lifeblood::lifeblood_wedge_submitter::1.0
+Label: Lifeblood Wedge Submitter
+Path: oplib:/lifeblood::Driver/lifeblood_wedge_submitter::1.0?lifeblood::Driver/lifeblood_wedge_submitter::1.0
+Icon: opdef:/lifeblood::Driver/lifeblood_submitter::1.0.0?IconSVG
+Table: Driver
+License:
+Extra:
+User:
+Inputs: 0 to 1
+Subnet: true
+Python: false
+Empty: false
+Modified: Tue Nov 5 19:12:09 2024
+
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/Sections.list b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/Sections.list
new file mode 100644
index 00000000..3f501eec
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/Sections.list
@@ -0,0 +1,4 @@
+""
+INDEX__SECTION INDEX_SECTION
+houdini.hdalibrary houdini.hdalibrary
+lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0 lifeblood::Driver/lifeblood_wedge_submitter::1.0
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/houdini.hdalibrary b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/houdini.hdalibrary
new file mode 100644
index 00000000..e69de29b
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/.OPdummydefs b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/.OPdummydefs
new file mode 100644
index 00000000..efc9cf0e
Binary files /dev/null and b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/.OPdummydefs differ
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/.OPfallbacks b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/.OPfallbacks
new file mode 100644
index 00000000..9ae3319a
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/.OPfallbacks
@@ -0,0 +1,2 @@
+lifeblood::Driver/lifeblood_submitter::1.0.0 /home/xapkohheh/git/dev_fhs/projects_py/lifeblood/dcc_plugins/houdini/otls/Driver-lifeblood_submitter-1.0.0.hda
+lifeblood::Driver/lifeblood_submitter::1.0.0 otls/Driver-lifeblood_submitter-1.0.0.hda
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/Contents.createtimes b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/Contents.createtimes
new file mode 100644
index 00000000..345771c1
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/Contents.createtimes
@@ -0,0 +1,4 @@
+{
+ "hdaroot/lifeblood_submitter.def":1730830147,
+ "hdaroot.def":1730830225
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/Contents.mime b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/Contents.mime
new file mode 100644
index 00000000..18f12eeb
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/Contents.mime
@@ -0,0 +1,975 @@
+MIME-Version: 1.0
+Content-Type: multipart/mixed; boundary="HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY"
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename=".OPfallbacks"
+Content-Type: application/external-reference
+
+.OPfallbacks
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename=".OPdummydefs"
+Content-Type: application/external-reference
+
+.OPdummydefs
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="node_type"
+Content-Type: text/plain
+
+Driver
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.init"
+Content-Type: text/plain
+
+type = lifeblood::lifeblood_wedge_submitter::1.0
+matchesdef = 0
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.def"
+Content-Type: text/plain
+
+comment ""
+position -2.2402 -3.39346
+connectornextid 0
+flags = lock off model off template off footprint off xray off bypass off display off render off highlight off unload off savedata off compress on colordefault on exposed on
+outputsNamed3
+{
+}
+inputsNamed3
+{
+}
+inputs
+{
+}
+stat
+{
+ create -1
+ modify -1
+ author xapkohheh@localhost
+ access 0777
+}
+color UT_Color RGB 0.8 0.8 0.8
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":""
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.inp"
+Content-Type: text/plain
+
+1
+0 0 6 2 0 __NO_OWNER_NETWORK_BOX__ "FROMOUTPUT"
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.init"
+Content-Type: text/plain
+
+type = lifeblood::lifeblood_submitter::1.0.0
+matchesdef = 1
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.def"
+Content-Type: text/plain
+
+comment ""
+position 0 5.2176
+connectornextid 0
+flags = lock off model off template off footprint off xray off bypass off display on render on highlight off unload off savedata off compress on colordefault on exposed on
+outputsNamed3
+{
+}
+inputsNamed3
+{
+}
+inputs
+{
+}
+stat
+{
+ create -1
+ modify -1
+ author xapkohheh@localhost
+ access 0777
+}
+color UT_Color RGB 0.8 0.8 0.8
+delscript ""
+exprlanguage hscript
+end
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.spareparmdef"
+Content-Type: text/plain
+
+ group {
+ name "_hidden2"
+ label "_hidden"
+ invisibletab
+
+ parm {
+ name "execute"
+ baseparm
+ label "Render"
+ joinnext
+ export none
+ }
+ parm {
+ name "renderdialog"
+ baseparm
+ label "Controls..."
+ nolabel
+ export none
+ }
+ }
+
+ parm {
+ name "submit"
+ baseparm
+ label "create task"
+ export none
+ }
+ parm {
+ name "sch_ip"
+ baseparm
+ label "ip"
+ joinnext
+ export none
+ }
+ parm {
+ name "sch_port"
+ baseparm
+ label "port"
+ nolabel
+ export none
+ }
+ groupcollapsible {
+ name "broadcast_parameters2"
+ label "broadcast parameters"
+
+ parm {
+ name "brd_ip"
+ baseparm
+ label "broadcast ip"
+ joinnext
+ export none
+ }
+ parm {
+ name "brd_port"
+ baseparm
+ label "port"
+ nolabel
+ export none
+ }
+ parm {
+ name "brd_timeout"
+ baseparm
+ label "timeout (sec)"
+ export none
+ }
+ parm {
+ name "brd_identifier"
+ baseparm
+ label "identifier"
+ export none
+ }
+ }
+
+ parm {
+ name "broadcast_listen"
+ baseparm
+ label "Listen to Scheduler's broadcast to get ip and port"
+ export none
+ }
+ parm {
+ name "node_name"
+ baseparm
+ label "node name"
+ export none
+ }
+ parm {
+ name "task_name"
+ baseparm
+ label "task name"
+ export none
+ }
+ parm {
+ name "priority"
+ baseparm
+ label "task group priority"
+ export none
+ }
+ parm {
+ name "sepparm"
+ label "Separator"
+ type separator
+ default { "" }
+ }
+ parm {
+ name "f"
+ label "Start/End/Inc"
+ type integer
+ size 3
+ default { "$FSTART" "$FEND" "1" }
+ range { -1 1 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "framechunk_single"
+ label "All In Single Chunk"
+ type toggle
+ joinnext
+ default { "1" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "framechunk_size"
+ label "Chunk Size"
+ type integer
+ default { "10" }
+ hidewhen "{ framechunk_single == 1 }"
+ range { 1! 20 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "roppath"
+ label "Rop To Wedge"
+ type oppath
+ default { "" }
+ parmtag { "opfilter" "!!ROP!!" }
+ parmtag { "oprelative" "." }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "attrib_type"
+ label "Attribute To Wedge"
+ type ordinal
+ joinnext
+ default { "0" }
+ menu {
+ "int" "int"
+ "float" "float"
+ }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "attrib_name"
+ label "attrib name"
+ type string
+ nolabel
+ default { "attrib_to_wedge" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "attrib_range_int"
+ label "From/To/Count"
+ type intvector
+ size 3
+ default { "0" "9" "10" }
+ hidewhen "{ attrib_type != int }"
+ range { -1 1 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "attrib_range_float"
+ label "From/To/Count"
+ type vector
+ size 3
+ default { "0" "9" "10" }
+ hidewhen "{ attrib_type != float }"
+ range { -1 1 }
+ parmtag { "script_callback_language" "python" }
+ }
+ group {
+ name "resmanagement"
+ label "Resource Requirements"
+
+ parm {
+ name "res_cpucount"
+ label "Cpu cores (min/pref)"
+ type vector2
+ size 2
+ default { "2" "4" }
+ range { 0.1! 32 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_cpumem"
+ label "Cpu RAM GB (min/pref)"
+ type vector2
+ size 2
+ default { "0.5" "0" }
+ range { 0.1! 128 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_gpucount"
+ label "Gpu count (min/pref)"
+ type vector2
+ invisible
+ size 2
+ default { "0" "0" }
+ range { 0.1! 2 }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_gpumem"
+ label "Gpu RAM GB (min/pref)"
+ type vector2
+ invisible
+ size 2
+ default { "0" "0" }
+ range { 0.1! 16 }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ group {
+ name "resmanagement_1"
+ label "Attributes"
+
+ multiparm {
+ name "attribs"
+ label "attributes"
+ baseparm
+ default 1
+ parmtag { "multistartoffset" "0" }
+
+ parm {
+ name "enable_#"
+ baseparm
+ label "name"
+ joinnext
+ export none
+ }
+ parm {
+ name "attr_name_#"
+ baseparm
+ label "name"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "attr_type_#"
+ baseparm
+ label "type"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "val_int_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "val_flt_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "val_str_#"
+ baseparm
+ label "value"
+ nolabel
+ export none
+ }
+ parm {
+ name "val_jsn_#"
+ baseparm
+ label "value"
+ nolabel
+ export none
+ }
+ parm {
+ name "val_bln_#"
+ baseparm
+ label "value"
+ nolabel
+ export none
+ }
+ multiscroll {
+ name "val_lst_#"
+ label "list values count"
+ baseparm
+ hidewhen "{ attr_type_# != list }"
+ parmtag { "multistartoffset" "0" }
+
+ parm {
+ name "lst_attr_type_#_#"
+ baseparm
+ label "type"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "lst_val_int_#_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "lst_val_flt_#_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "lst_val_str_#_#"
+ baseparm
+ label "value"
+ nolabel
+ joinnext
+ export none
+ }
+ parm {
+ name "lst_val_bln_#_#"
+ baseparm
+ label "value"
+ nolabel
+ export none
+ }
+ }
+
+ }
+
+ }
+
+ group {
+ name "resmanagement_2"
+ label "Environment resolver"
+
+ parm {
+ name "env_resolver_name"
+ baseparm
+ label "Environment Resolver Name"
+ export none
+ }
+ multiparm {
+ name "env_resolver_args"
+ label "environment resolver parameters"
+ baseparm
+ default 2
+ parmtag { "multistartoffset" "0" }
+
+ parm {
+ name "env_arg_name_#"
+ baseparm
+ label "name"
+ joinnext
+ export none
+ }
+ parm {
+ name "env_arg_val_#"
+ baseparm
+ label "value"
+ export none
+ }
+ }
+
+ }
+
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.chn"
+Content-Type: text/plain
+
+{
+ channel env_arg_name_0 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = \"user\" language = python }
+ }
+ channel env_arg_val_0 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "import getpass
+return getpass.getuser()" language = python }
+ }
+ channel env_arg_name_1 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "import sys
+return \"package.houdini.py%d_%d\" % (sys.version_info.major, sys.version_info.minor)" language = python }
+ }
+ channel env_arg_val_1 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "\"~=\" + hou.applicationVersionString()" language = python }
+ }
+ channel attr_type_2 {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"attrib_type\") }
+ }
+ channel attr_type_3 {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"attrib_type\") }
+ }
+ channel attr_type_4 {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"attrib_type\") }
+ }
+ channel val_int_2 {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"attrib_range_intx\") }
+ }
+ channel val_int_3 {
+ lefttype = extend
+ righttype = extend
+ default = 9
+ flags = 0
+ segment { length = 0 value = 9 9 expr = ch(\"attrib_range_inty\") }
+ }
+ channel val_int_4 {
+ lefttype = extend
+ righttype = extend
+ default = 10
+ flags = 0
+ segment { length = 0 value = 10 10 expr = ch(\"attrib_range_intz\") }
+ }
+ channel val_flt_2 {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"attrib_range_floatx\") }
+ }
+ channel val_flt_3 {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"attrib_range_floaty\") }
+ }
+ channel val_flt_4 {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"attrib_range_floatz\") }
+ }
+ channel val_jsn_6 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "node = hou.pwd()
+
+start, end, inc = node.parmTuple('f').eval()
+if int(start) == start and int(end) == end and int(inc) == inc:
+ start, end, inc = int(start), int(end), int(inc)
+
+frames = []
+assert start <= end
+assert inc > 0
+
+while start <= end:
+ frames.append(start)
+ start += inc
+
+return repr(frames)" language = python }
+ }
+ channel val_jsn_7 {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { options = { autoslope ai ao }
+
+ length = 0 accel = 0.33333333333333331 0.33333333333333331 expr = "import json
+n = hou.pwd()
+return json.dumps({'cpu': {'min': n.evalParm('res_cpucountx'),
+ 'pref': n.evalParm('res_cpucounty')},
+ 'cmem': {'min': n.evalParm('res_cpumemx'),
+ 'pref': n.evalParm('res_cpumemy')}})
+" language = python }
+ }
+ channel val_int_8 {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = "if(ch(\"framechunk_single\"), ch(\"f2\")-ch(\"f1\")+1, ch(\"framechunk_size\"))" }
+ }
+ channel sch_ip {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"127.0.0.1\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../sch_ip\") }
+ }
+ channel sch_port {
+ lefttype = extend
+ righttype = extend
+ default = 1384
+ flags = 0
+ segment { length = 0 value = 1384 1384 expr = ch(\"../sch_port\") }
+ }
+ channel brd_ip {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"0.0.0.0\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../brd_ip\") }
+ }
+ channel brd_port {
+ lefttype = extend
+ righttype = extend
+ default = 34305
+ flags = 0
+ segment { length = 0 value = 34305 34305 expr = ch(\"../brd_port\") }
+ }
+ channel brd_timeout {
+ lefttype = extend
+ righttype = extend
+ default = 15
+ flags = 0
+ segment { length = 0 value = 15 15 expr = ch(\"../brd_timeout\") }
+ }
+ channel brd_identifier {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"lifeblood_scheduler\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../brd_identifier\") }
+ }
+ channel broadcast_listen {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../broadcast_listen\") }
+ }
+ channel node_name {
+ lefttype = extend
+ righttype = extend
+ defaultString = "\"IN WEDGE\""
+ flags = 0
+ segment { length = 0 expr = chs(\"../node_name\") }
+ }
+ channel task_name {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"$OS\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../task_name\") }
+ }
+ channel priority {
+ lefttype = extend
+ righttype = extend
+ default = 50
+ flags = 0
+ segment { length = 0 value = 50 50 expr = ch(\"../priority\") }
+ }
+ channel f1 {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../f1\") }
+ }
+ channel f2 {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../f2\") }
+ }
+ channel f3 {
+ lefttype = extend
+ righttype = extend
+ default = 1
+ flags = 0
+ segment { length = 0 value = 1 1 expr = ch(\"../f3\") }
+ }
+ channel framechunk_single {
+ lefttype = extend
+ righttype = extend
+ default = 1
+ flags = 0
+ segment { length = 0 value = 1 1 expr = ch(\"../framechunk_single\") }
+ }
+ channel framechunk_size {
+ lefttype = extend
+ righttype = extend
+ default = 10
+ flags = 0
+ segment { length = 0 value = 10 10 expr = ch(\"../framechunk_size\") }
+ }
+ channel roppath {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"\"
+ flags = 0
+ segment { length = 0 expr = chsop(\"../roppath\") }
+ }
+ channel attrib_type {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../attrib_type\") }
+ }
+ channel attrib_name {
+ lefttype = extend
+ righttype = extend
+ defaultString = \"attrib_to_wedge\"
+ flags = 0
+ segment { length = 0 expr = chs(\"../attrib_name\") }
+ }
+ channel attrib_range_intx {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../attrib_range_intx\") }
+ }
+ channel attrib_range_inty {
+ lefttype = extend
+ righttype = extend
+ default = 9
+ flags = 0
+ segment { length = 0 value = 9 9 expr = ch(\"../attrib_range_inty\") }
+ }
+ channel attrib_range_intz {
+ lefttype = extend
+ righttype = extend
+ default = 10
+ flags = 0
+ segment { length = 0 value = 10 10 expr = ch(\"../attrib_range_intz\") }
+ }
+ channel attrib_range_floatx {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../attrib_range_floatx\") }
+ }
+ channel attrib_range_floaty {
+ lefttype = extend
+ righttype = extend
+ default = 9
+ flags = 0
+ segment { length = 0 value = 9 9 expr = ch(\"../attrib_range_floaty\") }
+ }
+ channel attrib_range_floatz {
+ lefttype = extend
+ righttype = extend
+ default = 10
+ flags = 0
+ segment { length = 0 value = 10 10 expr = ch(\"../attrib_range_floatz\") }
+ }
+ channel res_cpucountx {
+ lefttype = extend
+ righttype = extend
+ default = 2
+ flags = 0
+ segment { length = 0 value = 2 2 expr = ch(\"../res_cpucountx\") }
+ }
+ channel res_cpucounty {
+ lefttype = extend
+ righttype = extend
+ default = 4
+ flags = 0
+ segment { length = 0 value = 4 4 expr = ch(\"../res_cpucounty\") }
+ }
+ channel res_cpumemx {
+ lefttype = extend
+ righttype = extend
+ default = 0.5
+ flags = 0
+ segment { length = 0 value = 0.5 0.5 expr = ch(\"../res_cpumemx\") }
+ }
+ channel res_cpumemy {
+ lefttype = extend
+ righttype = extend
+ flags = 0
+ segment { length = 0 expr = ch(\"../res_cpumemy\") }
+ }
+ }
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.parm"
+Content-Type: text/plain
+
+{
+version 0.8
+execute [ 0 locks=0 ] ( 0 )
+renderdialog [ 0 locks=0 ] ( 0 )
+_hidden [ 0 locks=0 ] ( 0 )
+submit [ 0 locks=0 ] ( 0 )
+sch_ip [ 0 locks=0 ] ( [ sch_ip 127.0.0.1 ] )
+sch_port [ 0 locks=0 ] ( [ sch_port 1384 ] )
+broadcast_parameters [ 0 locks=0 ] ( 0 )
+brd_ip [ 0 locks=0 ] ( [ brd_ip 0.0.0.0 ] )
+brd_port [ 0 locks=0 ] ( [ brd_port 34305 ] )
+brd_timeout [ 0 locks=0 ] ( [ brd_timeout 15 ] )
+brd_identifier [ 0 locks=0 ] ( [ brd_identifier lifeblood_scheduler ] )
+broadcast_listen [ 0 locks=0 ] ( [ broadcast_listen 0 ] )
+node_name [ 0 locks=0 ] ( [ node_name "" ] )
+task_name [ 0 locks=0 ] ( [ task_name $OS ] )
+priority [ 0 locks=0 ] ( [ priority 50 ] )
+folder0 [ 0 locks=0 ] ( 0 0 )
+attribs [ 0 locks=0 ] ( 9 )
+env_resolver_name [ 0 locks=0 ] ( StandardEnvironmentResolver )
+env_resolver_args [ 0 locks=0 ] ( 2 )
+enable_0 [ 0 locks=0 ] ( "on" )
+attr_name_0 [ 0 locks=0 ] ( hipfile )
+attr_type_0 [ 0 locks=0 ] ( "str" )
+val_int_0 [ 0 locks=0 ] ( 0 )
+val_flt_0 [ 0 locks=0 ] ( 0 )
+val_str_0 [ 0 locks=0 ] ( $HIPFILE )
+val_jsn_0 [ 0 locks=0 ] ( "" )
+val_bln_0 [ 0 locks=0 ] ( "off" )
+val_lst_0 [ 0 locks=0 ] ( 0 )
+env_arg_name_0 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ env_arg_name_0 "" ] )
+env_arg_val_0 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ env_arg_val_0 "" ] )
+env_arg_name_1 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ env_arg_name_1 "" ] )
+env_arg_val_1 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ env_arg_val_1 "" ] )
+_hidden2 [ 0 locks=0 ] ( 0 )
+broadcast_parameters2 [ 0 locks=0 ] ( 0 )
+sepparm [ 0 locks=0 ] ( )
+f [ 0 locks=0 ] ( [ f1 0 ] [ f2 0 ] [ f3 1 ] )
+framechunk_single [ 0 locks=0 ] ( [ framechunk_single 1 ] )
+framechunk_size [ 0 locks=0 ] ( [ framechunk_size 10 ] )
+roppath [ 0 locks=0 ] ( [ roppath "" ] )
+attrib_type [ 0 locks=0 ] ( [ attrib_type 0 ] )
+attrib_name [ 0 locks=0 ] ( [ attrib_name attrib_to_wedge ] )
+attrib_range_int [ 0 locks=0 ] ( [ attrib_range_intx 0 ] [ attrib_range_inty 9 ] [ attrib_range_intz 10 ] )
+attrib_range_float [ 0 locks=0 ] ( [ attrib_range_floatx 0 ] [ attrib_range_floaty 9 ] [ attrib_range_floatz 10 ] )
+resmanagement [ 0 locks=0 ] ( 1 1 1 )
+res_cpucount [ 0 locks=0 ] ( [ res_cpucountx 2 ] [ res_cpucounty 4 ] )
+res_cpumem [ 0 locks=0 ] ( [ res_cpumemx 0.5 ] [ res_cpumemy 0 ] )
+res_gpucount [ 0 locks=0 ] ( 0 0 )
+res_gpumem [ 0 locks=0 ] ( 0 0 )
+enable_1 [ 0 locks=0 ] ( "on" )
+attr_name_1 [ 0 locks=0 ] ( wedge_attr )
+attr_type_1 [ 0 locks=0 ] ( "str" )
+val_int_1 [ 0 locks=0 ] ( 0 )
+val_flt_1 [ 0 locks=0 ] ( 0 )
+val_str_1 [ 0 locks=0 ] ( `chs(\"attrib_name\")` )
+val_jsn_1 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( "" )
+val_bln_1 [ 0 locks=0 ] ( "off" )
+val_lst_1 [ 0 locks=0 ] ( 0 )
+enable_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "on" )
+attr_name_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( wedge_attr_from )
+attr_type_2 [ 8 locks=0 autoscope=0 autosel=4294967295 ] ( [ attr_type_2 0 ] )
+val_int_2 [ 8 locks=0 autoscope=0 autosel=4294967295 ] ( [ val_int_2 0 ] )
+val_flt_2 [ 8 locks=0 autoscope=0 autosel=4294967295 ] ( [ val_flt_2 0 ] )
+val_str_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "" )
+val_jsn_2 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( "" )
+val_bln_2 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "off" )
+val_lst_2 [ 0 locks=0 ] ( 0 )
+enable_3 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "on" )
+attr_name_3 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( wedge_attr_to )
+attr_type_3 [ 8 locks=0 autoscope=0 autosel=4294967295 ] ( [ attr_type_3 0 ] )
+val_int_3 [ 8 locks=0 autoscope=0 autosel=4294967295 ] ( [ val_int_3 0 ] )
+val_flt_3 [ 8 locks=0 autoscope=0 autosel=4294967295 ] ( [ val_flt_3 0 ] )
+val_str_3 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "" )
+val_jsn_3 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( "" )
+val_bln_3 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "off" )
+val_lst_3 [ 0 locks=0 ] ( 0 )
+enable_4 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "on" )
+attr_name_4 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( wedge_attr_count )
+attr_type_4 [ 8 locks=0 autoscope=0 autosel=4294967295 ] ( [ attr_type_4 0 ] )
+val_int_4 [ 8 locks=0 autoscope=0 autosel=4294967295 ] ( [ val_int_4 0 ] )
+val_flt_4 [ 8 locks=0 autoscope=0 autosel=4294967295 ] ( [ val_flt_4 0 ] )
+val_str_4 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "" )
+val_jsn_4 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( "" )
+val_bln_4 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "off" )
+val_lst_4 [ 0 locks=0 ] ( 0 )
+enable_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "on" )
+attr_name_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( hipdriver )
+attr_type_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "str" )
+val_int_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_flt_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_str_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( `chsop(\"roppath\")` )
+val_jsn_5 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( "" )
+val_bln_5 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "off" )
+val_lst_5 [ 0 locks=0 ] ( 0 )
+enable_6 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "on" )
+attr_name_6 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( frames )
+attr_type_6 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "json" )
+val_int_6 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_flt_6 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( 0 )
+val_str_6 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "" )
+val_jsn_6 [ 0 locks=0 autoscope=1 autosel=4294967295 ] ( [ val_jsn_6 "" ] )
+val_bln_6 [ 0 locks=0 autoscope=0 autosel=4294967295 ] ( "off" )
+val_lst_6 [ 0 locks=0 ] ( 0 )
+enable_7 [ 0 locks=0 ] ( "on" )
+attr_name_7 [ 0 locks=0 ] ( requirements )
+attr_type_7 [ 0 locks=0 ] ( "json" )
+val_int_7 [ 0 locks=0 ] ( 0 )
+val_flt_7 [ 0 locks=0 ] ( 0 )
+val_str_7 [ 0 locks=0 ] ( "" )
+val_jsn_7 [ 0 locks=0 ] ( [ val_jsn_7 "" ] )
+val_bln_7 [ 0 locks=0 ] ( "off" )
+val_lst_7 [ 0 locks=0 ] ( 0 )
+enable_8 [ 0 locks=0 ] ( "on" )
+attr_name_8 [ 0 locks=0 ] ( framechunk_size )
+attr_type_8 [ 0 locks=0 ] ( "int" )
+val_int_8 [ 8 locks=0 ] ( [ val_int_8 0 ] )
+val_flt_8 [ 0 locks=0 ] ( 0 )
+val_str_8 [ 0 locks=0 ] ( "" )
+val_jsn_8 [ 0 locks=0 ] ( "" )
+val_bln_8 [ 0 locks=0 ] ( "off" )
+val_lst_8 [ 0 locks=0 ] ( 0 )
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot/lifeblood_submitter.userdata"
+Content-Type: text/plain
+
+{
+ "___Version___":{
+ "type":"string",
+ "value":""
+ }
+}
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY
+Content-Disposition: attachment; filename="hdaroot.net"
+Content-Type: text/plain
+
+1
+
+--HOUDINIMIMEBOUNDARY0xD3ADD339-0x00000F49-0x56B122C9-0x00000001HOUDINIMIMEBOUNDARY--
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/Contents.modtimes b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/Contents.modtimes
new file mode 100644
index 00000000..4b80cd49
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/Contents.modtimes
@@ -0,0 +1,4 @@
+{
+ "hdaroot/lifeblood_submitter.def":1730830415,
+ "hdaroot.def":1730830234
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/Sections.list b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/Sections.list
new file mode 100644
index 00000000..49f2c152
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Contents.dir/Sections.list
@@ -0,0 +1,2 @@
+""
+Contents.mime Contents.mime
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/CreateScript b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/CreateScript
new file mode 100644
index 00000000..5eabf6bc
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/CreateScript
@@ -0,0 +1,14 @@
+# Automatically generated script
+\set noalias = 1
+#
+# Creation script for lifeblood::lifeblood_wedge_submitter::1.0 operator
+#
+
+if ( "$arg1" == "" ) then
+ echo This script is intended as a creation script
+ exit
+endif
+
+# Node $arg1 (lifeblood::Driver/lifeblood_wedge_submitter::1.0)
+opexprlanguage -s hscript $arg1
+opuserdata -n '___Version___' -v '' $arg1
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/DialogScript b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/DialogScript
new file mode 100644
index 00000000..b993bd48
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/DialogScript
@@ -0,0 +1,303 @@
+# Dialog script for lifeblood::lifeblood_wedge_submitter::1.0 automatically generated
+
+{
+ name lifeblood::lifeblood_wedge_submitter::1.0
+ script lifeblood::lifeblood_wedge_submitter::1.0
+ label "Lifeblood Wedge Submitter"
+
+ help {
+ ""
+ }
+
+ inputlabel 1 "Input #1"
+
+ parm {
+ name "execute"
+ baseparm
+ label "Render"
+ invisible
+ joinnext
+ export none
+ }
+ parm {
+ name "renderdialog"
+ baseparm
+ label "Controls..."
+ nolabel
+ invisible
+ export none
+ }
+ import {
+ label submitter
+ source "op:./lifeblood_submitter"
+ enable 1
+
+ parm {
+ name "submit"
+ label "create task"
+ type button
+ default { "0" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "submit" }
+ parmtag { "script_callback" "hou.phm().submit_btn_callback(hou.pwd())" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "sch_ip"
+ label "ip"
+ type string
+ joinnext
+ default { "127.0.0.1" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "sch_ip" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "sch_port"
+ label "port"
+ type integer
+ nolabel
+ default { "1384" }
+ range { 0 10 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "sch_port" }
+ parmtag { "script_callback_language" "python" }
+ }
+ groupcollapsible {
+ name "folder2"
+ label "broadcast parameters"
+ grouptag { "import_source" "op:./lifeblood_submitter" }
+ grouptag { "import_token" "broadcast_parameters2:broadcast parameters" }
+
+ parm {
+ name "brd_ip"
+ label "broadcast ip"
+ type string
+ joinnext
+ default { "0.0.0.0" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "brd_ip" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "brd_port"
+ label "port"
+ type integer
+ nolabel
+ default { "34305" }
+ range { 0 10 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "brd_port" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "brd_timeout"
+ label "timeout (sec)"
+ type integer
+ default { "15" }
+ range { 1! 20 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "brd_timeout" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "brd_identifier"
+ label "identifier"
+ type string
+ default { "lifeblood_scheduler" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "brd_identifier" }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ parm {
+ name "broadcast_listen"
+ label "Listen to Scheduler's broadcast to get ip and port"
+ type button
+ default { "0" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "broadcast_listen" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "node_name"
+ label "node name"
+ type string
+ default { "IN WEDGE" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "node_name" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "task_name"
+ label "task name"
+ type string
+ default { "$OS" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "task_name" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "priority"
+ label "task group priority"
+ type float
+ default { "50" }
+ range { 0! 100 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "priority" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "sepparm"
+ label "Separator"
+ type separator
+ default { "" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "sepparm" }
+ }
+ parm {
+ name "f"
+ label "Start/End/Inc"
+ type integer
+ size 3
+ default { [ "$FSTART" hscript-expr ] [ "$FEND" hscript-expr ] "1" }
+ range { -1 1 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "f" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "framechunk_single"
+ label "All In Single Chunk"
+ type toggle
+ joinnext
+ default { "on" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "framechunk_single" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "framechunk_size"
+ label "Chunk Size"
+ type integer
+ default { "10" }
+ hidewhen "{ framechunk_single == 1 }"
+ range { 1! 20 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "framechunk_size" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "roppath"
+ label "Rop To Wedge"
+ type oppath
+ default { "" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "roppath" }
+ parmtag { "opfilter" "!!ROP!!" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "attrib_type"
+ label "Attribute To Wedge"
+ type ordinal
+ joinnext
+ default { "int" }
+ menu {
+ "int" "int"
+ "float" "float"
+ }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "attrib_type" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "attrib_name"
+ label "attrib name"
+ type string
+ nolabel
+ default { "attrib_to_wedge" }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "attrib_name" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "attrib_range_int"
+ label "From/To/Count"
+ type intvector
+ size 3
+ default { "0" "9" "10" }
+ hidewhen "{ attrib_type != int }"
+ range { -1 1 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "attrib_range_int" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "attrib_range_float"
+ label "From/To/Count"
+ type vector
+ size 3
+ default { "0" "9" "10" }
+ hidewhen "{ attrib_type != float }"
+ range { -1 1 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "attrib_range_float" }
+ parmtag { "script_callback_language" "python" }
+ }
+ group {
+ name "folder3"
+ label "Resource Requirements"
+ grouptag { "import_source" "op:./lifeblood_submitter" }
+ grouptag { "import_token" "resmanagement:Resource Requirements" }
+
+ parm {
+ name "res_cpucount"
+ label "Cpu cores (min/pref)"
+ type vector2
+ size 2
+ default { "2" "4" }
+ range { 0.1! 32 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "res_cpucount" }
+ parmtag { "script_callback_language" "python" }
+ }
+ parm {
+ name "res_cpumem"
+ label "Cpu RAM GB (min/pref)"
+ type vector2
+ size 2
+ default { "0.5" "0.1" }
+ range { 0.1! 128 }
+ parmtag { "autoscope" "0000000000000000" }
+ parmtag { "import_source" "op:./lifeblood_submitter" }
+ parmtag { "import_token" "res_cpumem" }
+ parmtag { "script_callback_language" "python" }
+ }
+ }
+
+ }
+
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/ExtraFileOptions b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/ExtraFileOptions
new file mode 100644
index 00000000..eaf2fd38
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/ExtraFileOptions
@@ -0,0 +1,22 @@
+{
+ "PythonModule/Cursor":{
+ "type":"intarray",
+ "value":[13,15]
+ },
+ "PythonModule/IsExpr":{
+ "type":"bool",
+ "value":false
+ },
+ "PythonModule/IsPython":{
+ "type":"bool",
+ "value":true
+ },
+ "PythonModule/IsScript":{
+ "type":"bool",
+ "value":true
+ },
+ "PythonModule/Source":{
+ "type":"string",
+ "value":""
+ }
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Help b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Help
new file mode 100644
index 00000000..e69de29b
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/InternalFileOptions b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/InternalFileOptions
new file mode 100644
index 00000000..222988aa
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/InternalFileOptions
@@ -0,0 +1,10 @@
+{
+ "nodeconntype":{
+ "type":"bool",
+ "value":false
+ },
+ "nodeparmtype":{
+ "type":"bool",
+ "value":false
+ }
+}
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/PythonModule b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/PythonModule
new file mode 100644
index 00000000..51002963
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/PythonModule
@@ -0,0 +1,35 @@
+import hou
+
+
+def submit_btn_callback(node):
+ # validate
+ ropnode = node.parm('roppath').evalAsNode()
+ if ropnode is None:
+ hou.ui.displayMessage(
+ 'Cache node is not selected',
+ severity=hou.severityType.Error,
+ title='you forgot to select node to cache/render'
+ )
+ return
+ if ropnode.type().nameComponents()[2] == 'filecache' and (subnode := ropnode.node('render')):
+ roppath = node.parm('roppath').evalAsString()
+ if not roppath.endswith('/'):
+ roppath += '/'
+ try:
+ node.parm('roppath').set(roppath + 'render')
+ ropnode = subnode
+ except hou.OperationFailed:
+ pass # we tried, it may be locked
+ assert node.parm('roppath').evalAsNode() == ropnode
+
+ if not isinstance(ropnode, hou.RopNode):
+ hou.ui.displayMessage(
+ f'Specify a Rop node to cache/render. Like a Rop Geometry node in SOP"',
+ severity=hou.severityType.Error,
+ title='Invalid node type to cache/render'
+ )
+ return
+
+ # submit
+ inner = node.node('lifeblood_submitter')
+ inner.hdaModule().submit_button_callback(inner)
\ No newline at end of file
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Sections.list b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Sections.list
new file mode 100644
index 00000000..2cd14533
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Sections.list
@@ -0,0 +1,10 @@
+""
+DialogScript DialogScript
+CreateScript CreateScript
+InternalFileOptions InternalFileOptions
+Contents.gz Contents.gz
+TypePropertiesOptions TypePropertiesOptions
+Help Help
+Tools.shelf Tools.shelf
+PythonModule PythonModule
+ExtraFileOptions ExtraFileOptions
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Tools.shelf b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Tools.shelf
new file mode 100644
index 00000000..e502ee9f
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/Tools.shelf
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+ ROP
+
+
+ $HDA_TABLE_AND_NAME
+
+ Lifeblood
+
+
+
diff --git a/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/TypePropertiesOptions b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/TypePropertiesOptions
new file mode 100644
index 00000000..a6d52acf
--- /dev/null
+++ b/dcc_plugins_workspace/houdini/otls/Driver-lifeblood_wedge_submitter-1.0.hda/lifeblood_8_8Driver_1lifeblood__wedge__submitter_8_81.0/TypePropertiesOptions
@@ -0,0 +1,14 @@
+CheckExternal := 1;
+ContentsCompressionType := 1;
+ForbidOutsideParms := 1;
+GzipContents := 1;
+LockContents := 1;
+MakeDefault := 1;
+ParmsFromVfl := 0;
+PrefixDroppedParmLabel := 0;
+PrefixDroppedParmName := 0;
+SaveCachedCode := 0;
+SaveIcon := 1;
+SaveSpareParms := 0;
+UnlockOnCreate := 0;
+UseDSParms := 1;