kind: remote
metadata:
  name: tf2-serving
  hash: 134293b94996e74275d90546f8d4ef96198af679
  project: ''
  labels:
    author: yaronh
  categories:
  - model-serving
  - machine-learning
spec:
  command: ''
  args: []
  image: ''
  description: tf2 image classification server
  max_replicas: 4
  env:
  - name: MODEL_CLASS
    value: TFModel
  - name: ENABLE_EXPLAINER
    value: 'False'
  config:
    spec.triggers.http:
      kind: http
      maxWorkers: 8
      attributes:
        ingresses: {}
      annotations: {}
  base_spec:
    apiVersion: nuclio.io/v1
    kind: nuclio:serving
    metadata:
      annotations:
        nuclio.io/generated_by: function generated from 01-09-2020
      labels: {}
      name: tf2-serving
    spec:
      build:
        baseImage: mlrun/mlrun
        commands:
        - pip install tensorflow>=2.1
        - pip install requests pillow
        functionSourceCode: IyBHZW5lcmF0ZWQgYnkgbnVjbGlvLmV4cG9ydC5OdWNsaW9FeHBvcnRlcgoKCgppbXBvcnQgd2FybmluZ3MKd2FybmluZ3Muc2ltcGxlZmlsdGVyKGFjdGlvbj0iaWdub3JlIiwgY2F0ZWdvcnk9RnV0dXJlV2FybmluZykKCmltcG9ydCBqc29uCmltcG9ydCBudW1weSBhcyBucAppbXBvcnQgcmVxdWVzdHMKZnJvbSB0ZW5zb3JmbG93IGltcG9ydCBrZXJhcwpmcm9tIHRlbnNvcmZsb3cua2VyYXMubW9kZWxzIGltcG9ydCBsb2FkX21vZGVsCmZyb20gdGVuc29yZmxvdy5rZXJhcy5wcmVwcm9jZXNzaW5nIGltcG9ydCBpbWFnZQpmcm9tIHRlbnNvcmZsb3cua2VyYXMucHJlcHJvY2Vzc2luZy5pbWFnZSBpbXBvcnQgbG9hZF9pbWcKZnJvbSBvcyBpbXBvcnQgZW52aXJvbiwgcGF0aApmcm9tIFBJTCBpbXBvcnQgSW1hZ2UKZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwpmcm9tIHVybGxpYi5yZXF1ZXN0IGltcG9ydCB1cmxvcGVuCmltcG9ydCBtbHJ1bgoKY2xhc3MgVEZNb2RlbChtbHJ1bi5ydW50aW1lcy5NTE1vZGVsU2VydmVyKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lOiBzdHIsIG1vZGVsX2Rpcjogc3RyKToKICAgICAgICBzdXBlcigpLl9faW5pdF9fKG5hbWUsIG1vZGVsX2RpcikKCiAgICAgICAgc2VsZi5JTUFHRV9XSURUSCA9IGludChlbnZpcm9uLmdldCgnSU1BR0VfV0lEVEgnLCAnMTI4JykpCiAgICAgICAgc2VsZi5JTUFHRV9IRUlHSFQgPSBpbnQoZW52aXJvbi5nZXQoJ0lNQUdFX0hFSUdIVCcsICcxMjgnKSkKICAgICAgICAKICAgICAgICB0cnk6CiAgICAgICAgICAgIHdpdGggb3BlbihlbnZpcm9uWydjbGFzc2VzX21hcCddLCAncicpIGFzIGY6CiAgICAgICAgICAgICAgICBzZWxmLmNsYXNzZXMgPSBqc29uLmxvYWQoZikKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgIHNlbGYuY2xhc3NlcyA9IE5vbmUKICAgICAgICAKICAgIGRlZiBsb2FkKHNlbGYpOgogICAgICAgIG1vZGVsX2ZpbGUsIGV4dHJhX2RhdGEgPSBzZWxmLmdldF9tb2RlbCgnLmg1JykKICAgICAgICBzZWxmLm1vZGVsID0gbG9hZF9tb2RlbChtb2RlbF9maWxlKQogICAgICAgIAogICAgZGVmIHByZXByb2Nlc3Moc2VsZiwgYm9keSk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBvdXRwdXQgPSB7J2luc3RhbmNlcyc6IFtdfQogICAgICAgICAgICBpbnN0YW5jZXMgPSBib2R5LmdldCgnaW5zdGFuY2VzJywgW10pCiAgICAgICAgICAgIGZvciBieXRlX2ltYWdlIGluIGluc3RhbmNlczoKICAgICAgICAgICAgICAgIGltZyA9IEltYWdlLm9wZW4oYnl0ZV9pbWFnZSkKICAgICAgICAgICAgICAgIGltZyA9IGltZy5yZXNpemUoKHNlbGYuSU1BR0VfV0lEVEgsIHNlbGYuSU1BR0VfSEVJR0hUKSkKCiAgICAgICAgICAgICAgICB4ID0gaW1hZ2UuaW1nX3RvX2FycmF5KGltZykKICAgICAgICAgICAgICAgIHggPSBucC5leHBhbmRfZGltcyh4LCBheGlzPTApCiAgICAgICAgICAgICAgICBvdXRwdXRbJ2luc3RhbmNlcyddLmFwcGVuZCh4KQogICAgICAgICAgICAKICAgICAgICAgICAgb3V0cHV0WydpbnN0YW5jZXMnXSA9IFtucC52c3RhY2sob3V0cHV0WydpbnN0YW5jZXMnXSldCiAgICAgICAgICAgIHJldHVybiBvdXRwdXQKICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbihmJ3JlY2VpdmVkOiB7Ym9keX0nKQogICAgICAgICAgICAKCiAgICBkZWYgcHJlZGljdChzZWxmLCBkYXRhKToKICAgICAgICBpbWFnZXMgPSBkYXRhLmdldCgnaW5zdGFuY2VzJywgW10pCgogICAgICAgIHByZWRpY3RlZF9wcm9iYWJpbGl0eSA9IHNlbGYubW9kZWwucHJlZGljdChpbWFnZXMpCgogICAgICAgIHJldHVybiBwcmVkaWN0ZWRfcHJvYmFiaWxpdHkKICAgICAgICAKICAgIGRlZiBwb3N0cHJvY2VzcyhzZWxmLCBwcmVkaWN0ZWRfcHJvYmFiaWxpdHkpOgogICAgICAgIGlmIHNlbGYuY2xhc3NlczoKICAgICAgICAgICAgcHJlZGljdGVkX2NsYXNzZXMgPSBucC5hcm91bmQocHJlZGljdGVkX3Byb2JhYmlsaXR5LCAxKS50b2xpc3QoKVswXQogICAgICAgICAgICBwcmVkaWN0ZWRfcHJvYmFiaWxpdGllcyA9IHByZWRpY3RlZF9wcm9iYWJpbGl0eS50b2xpc3QoKVswXQogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgJ3ByZWRpY3Rpb24nOiBbc2VsZi5jbGFzc2VzW3N0cihpbnQoY2xzKSldIGZvciBjbHMgaW4gcHJlZGljdGVkX2NsYXNzZXNdLCAKICAgICAgICAgICAgICAgIGYne3NlbGYuY2xhc3Nlc1siMSJdfS1wcm9iYWJpbGl0eSc6IHByZWRpY3RlZF9wcm9iYWJpbGl0aWVzCiAgICAgICAgICAgIH0KICAgICAgICBlbHNlOgogICAgICAgICAgICByZXR1cm4gcHJlZGljdGVkX3Byb2JhYmlsaXR5LnRvbGlzdCgpWzBdCgoKZnJvbSBtbHJ1bi5ydW50aW1lcyBpbXBvcnQgbnVjbGlvX2luaXRfaG9vawpkZWYgaW5pdF9jb250ZXh0KGNvbnRleHQpOgogICAgbnVjbGlvX2luaXRfaG9vayhjb250ZXh0LCBnbG9iYWxzKCksICdzZXJ2aW5nJykKCmRlZiBoYW5kbGVyKGNvbnRleHQsIGV2ZW50KToKICAgIHJldHVybiBjb250ZXh0Lm1scnVuX2hhbmRsZXIoY29udGV4dCwgZXZlbnQpCg==
        noBaseImagesPull: true
      env:
      - name: MODEL_CLASS
        value: TF2Model
      handler: tf2_serving:handler
      runtime: python:3.9
      volumes: []
  source: ''
  function_kind: serving