Добавление тегов в OCI с помощью SDK

У меня уже создано пространство имен и определены теги для ресурсов. Когда я пытаюсь добавить новые теги к ресурсам, старые теги удаляются. Поскольку я хотел бы использовать старые данные и вернуть значение вместе с новыми тегами. Пожалуйста, помогите мне с тем, как я могу достичь этого.

получить детализацию объема из определенного отсека

      import oci

config = oci.config.from_file("~/.oci/config")

core_client = oci.core.BlockstorageClient(config)

get_volume_response = core_client.get_volume(
    volume_id="ocid1.test.oc1..<unique_ID>EXAMPLE-volumeId-Value")

# Get the data from response
print(get_volume_response.data)

выход

      {
  "availability_domain": "eto:PHX-AD-1",
  "compartment_id": "ocid1.compartment.oc1..aaaaaaaapmj",
  "defined_tags": {
    "OMCS": {
      "CREATOR": "xyz@gmail.com"
    },
    "Oracle-Tags": {
      "CreatedBy": "xyz@gmail.com",
      "CreatedOn": "2022-07-5T08:29:24.865Z"
    }
  },
  "display_name": "test_VG",
  "freeform_tags": {},
  "id": "ocid1.volumegroup.oc1.phx.abced",
  "is_hydrated": null,
  "lifecycle_state": "AVAILABLE",
  "size_in_gbs": 100,
  "size_in_mbs": 102400,
  "source_details": {
    "type": "volumeIds",
    "volume_ids": [
      "ocid1.volume.oc1.phx.xyz"
    ]
  }

Я хочу, чтобы API ниже обновлял тег вместе со старыми данными.

старый тег

      "defined_tags": {
    "OMCS": {
      "CREATOR": "xyz@gmail.com"
    },
    "Oracle-Tags": {
      "CreatedBy": "xyz@gmail.com",
      "CreatedOn": "2022-07-5T08:29:24.865Z"
      import oci

config = oci.config.from_file("~/.oci/config")
core_client = oci.core.BlockstorageClient(config)

update_volume_response = core_client.update_volume(
    volume_id="ocid1.test.oc1..<unique_ID>EXAMPLE-volumeId-Value",
    update_volume_details=oci.core.models.UpdateVolumeDetails(
        defined_tags={
            'OMCS':{
                'INSTANCE': 'TEST',
                'COMPONENT': 'temp1.mt.exy.vcn.com'
            }
        },
        display_name = "TEMPMT01"))


print(update_volume_response.data)

Я также пытался, но получил ошибку атрибута.

      for tag in get_volume_response.data:
  def_tag.appened(tag.defined_tags)
return (def_tag)

Пожалуйста, помогите, как я могу добавить определенные_теги?

1 ответ

tagsопределяются как в . Append работает так же, как и при добавленииdict.

Ниже я вставил код для обновленияdefined_tagsдляBlock VolumesвOCI

      import oci
from oci.config import from_file

configAPI = from_file()  # Config file is read from user's home location i.e., ~/.oci/config

core_client = oci.core.BlockstorageClient(configAPI)

get_volume_response = core_client.get_volume(
    volume_id="ocid1.volume.oc1.ap-hyderabad-1.ameen")

# Get the data from response
volume_details = get_volume_response.data

defined_tags = getattr(volume_details, "defined_tags")
freeform_tags = getattr(volume_details, "freeform_tags")


# Add new tags as required. As defined_tags is a dict, addition of new key/value pair works like below.
# In case there are multiple tags to be added then use update() method of dict.
defined_tags["OMCS"]["INSTANCE"] = "TEST"
defined_tags["OMCS"]["COMPONENT"] = "temp1.mt.exy.vcn.com"

myJson={"freeform_tags":freeform_tags,"defined_tags": defined_tags}


update_volume_response = core_client.update_volume(
    volume_id="ocid1.volume.oc1.ap-hyderabad-1.ameen",
    update_volume_details=oci.core.models.UpdateVolumeDetails(
        defined_tags=defined_tags,
        freeform_tags=freeform_tags))

print(update_volume_response.data)

Другие вопросы по тегам