code: def set_type(spec, obj_type):
          
          if spec is None:
              raise ValueError('Spec cannot be None')
          if TemplateFields.generation not in spec:
              spec[TemplateFields.generation] = {}
  
          spec[TemplateFields.generation][TemplateFields.commkey] = \
              Gen.CLIENT if (obj_type & (int(1) << TemplateFields.FLAG_COMM_GEN)) > 0 else Gen.LEGACY_RANDOM
          spec[TemplateFields.generation][TemplateFields.appkey] = \
              Gen.CLIENT if (obj_type & (int(1) << TemplateFields.FLAG_APP_GEN)) > 0 else Gen.LEGACY_RANDOM
          spec[TemplateFields.type] = "%x" % obj_type
          return spec
docs: Updates type integer in the cerate UO specification.
          Type has to already have generations flags set correctly.
          Generation field is set accordingly.
  
          :param spec:
          :param obj_type:
          :return: