Giter Club home page Giter Club logo

2021-openstack-open-source-contribution's Introduction

๐Ÿค– Hi there! I am Ryan ๐Ÿฏ

Hits

1. Professional Summary

  • I have worked as a MLOps Engineer for 2 years and participated in ML and data process automation projects.
  • My current team manages on-premise and EKS Kubernetes clusters to control GPU servers and system monitoring.
  • My primary role is to abstract Flyte and Argo workflow SDK and CLI for AI researchers, which is wrapping resource control methods and build Gitops process for a docker containers.
  • The second is to deploy monitoring system to catch real-time notification with Uptime-Kuma, Ops-genie, Grafana, Prometheus, and EFK.
  • I excel in communication skills to address infrastructure-related issues for AI research engineers, and my troubleshooting and quick problem-solving abilities are outstanding.

2. Professional Experience

2.1 QRAFT TECHNOLOGIES

MLOps Engineer, Full time, Seoul, Korea | AI Fintech Startup | Apr. 2022 โ€“

  • Automate ML & data process projects with Flyte and Argo Workflow, and build custom SDK and CLI for researchers.
  • Deploy notification apps for on-call and resource monitoring with Grafana, Ops-genie, EFK, and Uptime-Kuma on EKS.
  • Treat on-premise cluster troubleshooting and recover system errors.

2.2 GENESIS LAB

Applicant AI Developer, Intern, Seoul, Korea | Interactive AI Product Startup | Jan. 2022 โ€“ Apr. 2023

  • Manage video meeting data platform frontend, ViewInter, based on React.js.
  • Deploy new functions for data labeling in ViewInter with Java Spring.

2.3 LIKELION

Web Programming Instructor, Full Time HCMC, Vietnam | Edu-Tech Startup | Nov. 2019 โ€“ Jan. 2021

  • Make entire web bootcamp curriculum and do lecture for Korean and Vietnames based on Python, JS, Django, Node.js, React.js every 12 weeks, participated in five times.
  • Student code review based on Github.

3. Education

3.1 Korea University | B.S, Engineering. Seoul, Korea | Sep. 2018 โ€“ Aug. 2021

  • Nominated student for startup camp program to HongKong, ShenZen, and Silicon Valley.
  • Provided OS, algorithms, and software engineering courses
  • Worked web developer intern in student startup

3.2 Korea University | B.S., English Language and Literature Department Seoul, Korea | Mar. 2013 โ€“ Aug. 2021

  • Learned British & American cultures from english movies
  • Provided from ancient to modern english literature courses

4. Other Information

4.1 Interest:

  • Analyzing startup business model & products
  • AI engineer networking

4.2 Certification:

  • Certified Kubernetes Administrator
  • Certified Tensorflow Developer
  • GCP Professional ML Engineer
  • GCP Professional Data Engineer

4.3 Developer Presentation

5. Get in Touch

Tech Blog Badge Linkedin Badge Gmail Badge

2021-openstack-open-source-contribution's People

Contributors

ryankor avatar

Watchers

 avatar  avatar  avatar

2021-openstack-open-source-contribution's Issues

์˜คํ”ˆ์†Œ์Šค ์ปจํŠธ๋ฆฌ๋ทฐ์…˜ 3์ฃผ์ฐจ ๊ณผ์ œ ์‚ฌํ•ญ ์ •๋ฆฌ (Master Challenge ๋งˆ์ง€๋ง‰ ์ฃผ)

2์ฃผ์ฐจ ์ •๋ฆฌ ๋‚ด์šฉ

  • ์ธ์ž๋กœ ์ž…๋ ฅ๋ฐ›์€ server list ๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ณ„ํ•ด๋‚ด๋Š”๊ฐ€? < ํ•„์ˆ˜ >
  • server list ๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํŒŒ์ผ์€ ๋ฌด์—‡์ธ๊ฐ€? <ํ•„์ˆ˜ >
  • openstackcli ๋Š” ์–ด๋–ป๊ฒŒ nova api ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ด๋‚˜์š”?
  • nova ์˜ ์–ด๋–ค API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„์˜ค๋‚˜์š”? ( ์–ด๋–ค URI ๋ฅผ ํ˜ธ์ถœํ•˜๋‚˜์š”? ) < ํ•„์ˆ˜ >
  • ๊ฒฐ๊ณผ๋ฅผ ์ด์˜๊ฒŒ table ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ํ•จ์ˆ˜๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

3์ฃผ์ฐจ ๋ฏธ์…˜

  • ๋ฏธ์…˜ 1: openstack server list ์˜ ๊ธฐ๋ณธ ๊ฒฐ๊ณผ ํ•„๋“œ์— "Project ID" ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ

  • ๋ฏธ์…˜2: openstack server list ์˜ ๊ธฐ๋ณธ ๊ฒฐ๊ณผ ํ•„๋“œ์— "Created At"๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ

6. Bug Report with python-openstackclient; openstack configuration show --mask

Error Explanation : openstack configuration show --mask does not masking password & token in the console
Devstack, Test Codes, and debug settings mask these things without any errors, but global & environmental configurations not

Solution

  • See the image below.

1. Ubuntu 20.04 Python3 `simplejson` Package Error

Error Logs (Setup : Cafe 24 Cloud)

Error Explanation : โ€œError: Cannot uninstall โ€˜simplejsonโ€™.
It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

Solution

  • If you are trying to install the latest version of devStack in Ubuntu 20.04(the latest version of ubuntu), you will see a confilct of python package.
  • you will not see this bug if you are using the stable version of devStack (Wallaby) in Ubuntu 18.04

> sudo dpkg -l | grep simplejson # find the package which has a string 'simplejson'

> sudo apt remove python3-simplejson # remove this in the python packages.

2. Ubuntu 20.04 Python3 `pyasn1-modules` Package Error

Error Explanation : โ€œError: Cannot uninstall โ€˜pyasn1-modulesโ€™.
It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

Solution

  • If you are trying to install the latest version of devStack in Ubuntu 20.04(the latest version of ubuntu), you will see a confilct of python package.
  • you will not see this bug if you are using the stable version of devStack (Wallaby) in Ubuntu 18.04

> sudo dpkg -l | grep pyasn1-modules # find the package which has a string 'simplejson'

> sudo apt remove python3-pyasn1-modules # remove this in the python packages.

2021.09.28 Online Team Meeting

Open Compute Project(OCP)

Open Source Storage Project (Ceph)

Open Infra Asia

์ธํ”„๋ผ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ์ „๋ฐ˜์˜ ๋ชจ๋“  ๊ณผ์ •์„ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ์˜คํ”ˆ์†Œ์Šคํ™” ์‹œํ‚ค๋Š” ํ”„๋กœ์ ํŠธ ๋งํฌ 2๊ฐœ์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด๊ณ  ์˜คํ”ˆ ์ธํ”„๋ผ ์•„์‹œ์•„์—์„œ ์ง„ํ–‰ํ•œ ๋ฐ‹์—… ๋‚ด์šฉ์„ ํ•จ๊ป˜ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

์˜คํ”ˆ์Šคํƒ ํŒ€ ์ตœ์ข… ์ผ์ • ์ •๋ฆฌ

ํŒ€ ์ตœ์ข… Tasks ์ •๋ฆฌ

  • 10์›” ๋ง๊นŒ์ง€ ํŒ€ ํ™œ๋™ ๋‚ด์šฉ ์ •๋ฆฌํ•ด์„œ Gitbook ์ œ์ž‘ํ•˜๊ธฐ
  • 10์›” 20์ผ PTG (Project Team Gathering) ์ฐธ์—ฌ (ํ•ด์™ธ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ํ™œ๋™ ๋‚ด์šฉ ๋ฐœํ‘œ)
  • 10์›” 30์ผ ์˜คํ”ˆ์†Œ์Šค ์ปจํŠธ๋ฆฌ๋ทฐ์…˜ ์ตœ์ข… ๋ฐœํ‘œ (๋‚ด๊ฐ€ ์ตœ์ข… ๋ฐœํ‘œ ์ž‘์—… ์ˆ˜ํ–‰)
  • 12์›” ํ•œ๊ตญ ์˜คํ”ˆ ์ธํ”„๋ผ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฐœํ‘œ (๋‚˜ ํฌํ•จ)
  • 11์›” 20 ~ 21์ผ ๋Œ€๊ตฌ ์ง€์—ญ ์Šคํ”„๋ฆฐํŠธ ๊ฒฝ๋ถ๋Œ€ ํ•™์ƒ ์˜คํ”ˆ์Šคํƒ ๊ธฐ์—ฌ ๋ฉ˜ํ† ๋ง ํ™œ๋™

5. Tox(OpenStack Documentation Tool, Sphinx Test Software) Error

Error Explanation : document isn't included in any toctree
There were several conflicts when I executed tox to commit the whole sphinx docs.

Solution

  • See the image below.

  • I have setup :orphan: the child node before commit.
  • It enables the index.rst file to include the file with :orphan: code and recognize the whole documentation when CI works.

`openstack network replace --tag` ์ปค๋งจ๋“œ ๊ฐœ๋ฐœ ์™„๋ฃŒ

์•„ ~~~~ ์ฝ”๋”ฉ ๋„ˆ๋ฌด ์žฌ๋ฐŒ๋‹ค ~~~~

๋ฒŒ์จ 3๋ฒˆ์งธ ์˜คํ”ˆ์Šคํƒ ํ†ตํ•ฉ ์ปค๋งจ๋“œ๋ฅผ ๊ฐœ๋ฐœํ–ˆ๋‹ค.

image

image

์ด๋ฒˆ์—” ๋„คํŠธ์›Œํฌ ์ปดํฌ๋„ŒํŠธ์™€ ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ด€๋ จ์žˆ๋Š” neutron ์ปดํฌ๋„ŒํŠธ์˜ ํ†ตํ•ฉ ์ปค๋งจ๋“œ๋“ค ์ค‘์— ๋„คํŠธ์›Œํฌ์— ๋ถ™์€ ํƒœ๊ทธ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” neutron tag-replace --tag ์ปค๋งจ๋“œ๋ฅผ openstack network replace --tag ์ด๋ ‡๊ฒŒ ํ†ตํ•ฉ ์ปค๋งจ๋“œ ๊ทœ์น™์— ๋”ฐ๋ผ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์„ ์„ฑ๊ณตํ–ˆ๋‹ค.

์ปจํŠธ๋ฆฌ๋ทฐ์…˜ ๋๋‚˜๊ณ  ๋‚˜๋‹ˆ๊นŒ ๋” ์žฌ๋ฐŒ๋„ค ใ…‹ใ…‹

์˜คํ”ˆ ์Šคํƒ ๊ตฌ์กฐ๊ฐ€ ๋ˆˆ์— ๋“ค์–ด์˜ค๋‹ˆ๊นŒ ๊ฐœ๋ฐœ ์†๋„์— ์—„์ฒญ๋‚˜๊ฒŒ ์ง„์ „์ด ๋ถ™๋Š”๋‹ค.

์ด๋ฒˆ์—” 2์‹œ๊ฐ„๋„ ์•ˆ๊ฑธ๋ฆฐ ๊ฒƒ ๊ฐ™์€๋ฐ??

๋‚ด์ผ ์•„์นจ์— CI ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ํ™•์ธํ•ด๋ด์•ผ๊ฒ ์ง€๋งŒ, ์ผ๋‹จ ํŒŒ์ด์ฐธ Tox ํ…Œ์ŠคํŠธ์—์„œ๋Š” ๋ณ„๋„์˜ ์—๋Ÿฌ ์—†์ด ์ •์ƒ์ ์œผ๋กœ ์ž˜ ์ˆ˜ํ–‰๋œ ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค.

์ด์ œ๋Š” ๋‹จ์ˆœํžˆ ์ŠคํŽ™ ์Œ“๊ธฐ์šฉ์ด ์•„๋‹ˆ๋ผ, ์ง„์งœ ์ง„์‹ฌ์œผ๋กœ ์˜คํ”ˆ ์Šคํƒ ๊ฐœ๋ฐœ์ด ์žฌ๋ฐŒ์–ด์„œ ๋” ์ฝ”๋“œ๋ฅผ ๋งŒ์ง€๊ฒŒ ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

image

openstack network replace <network name> --tag <replaceํ•  ํƒœ๊ทธ ์ด๋ฆ„> --tag <๊ธฐ์กด ํƒœ๊ทธ>

์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋‚œ ํ›„, openstack show <network name>์„ ์ž…๋ ฅํ–ˆ์„ ๋•Œ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์œ„์˜ ์ด๋ฏธ์ง€์ด๊ณ , ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋„ ๋ฌธ์ œ ์—†์ด ์ž‘๋™ํ•œ๋‹ค.

์ปค๋ฐ‹ ๋งํฌ : https://review.opendev.org/c/openstack/python-openstackclient/+/817208

3. Ubuntu 20.04 & devStack Master Branch, `Internet Disconnection Error`

Error Explanation : There is the internet disconnection error after OpenStack installed in Ubuntu20.04.

  • My team has set up OpenStack with the whole same process of Wallaby, but we cannot use the network after we create a new instance in it.

Solution

  • We are still searching the solution why it occurs (we assume we can search iptables with trouble shooting)

`openstack configuration show --mask`๊ตฌํ˜„ ๊ด€๋ จ maintainer feedback

1. ์ง„ํ–‰ ์ƒํ™ฉ

๊ธฐ๋Šฅ ์ฝ”๋“œ ์ˆ˜์ • ์ดํ›„, ๋ฒ„๊ทธ ์žฌํ˜„ ๋ฐ ํ•ด๋‹น ํ•ด๊ฒฐ ์ฝ”๋“œ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด๋‹ฌ๋ผ๋Š” ์š”์ฒญ์„ ๋ฐ›์Œ

์ด์— ๋”ฐ๋ผ ๊ธฐ์กด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ(test_configuration.py)์— ์žˆ๋˜ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ 2๊ฐœ์˜ ํ•จ์ˆ˜๋กœ ๋ถ„ํ• ํ•จ

    @mock.patch("keystoneauth1.loading.base.get_plugin_options",
                return_value=opts)
    def test_show_mask_with_cloud_config(self, m_get_plugin_opts):
        arglist = ['--mask']
        verifylist = [('mask', True)]
        self.app.client_manager.configuration_type = "cloud_config"
        cmd = configuration.ShowConfiguration(self.app, None)

        parsed_args = self.check_parser(cmd, arglist, verifylist)

        columns, data = cmd.take_action(parsed_args)

        self.assertEqual(self.columns, columns)
        self.assertEqual(self.datalist, data)

    @mock.patch("keystoneauth1.loading.base.get_plugin_options",
                return_value=opts)
    def test_show_mask_with_global_env(self, m_get_plugin_opts):
        arglist = ['--mask']
        verifylist = [('mask', True)]
        self.app.client_manager.configuration_type = "global_env"
        column_list = (
            'identity_api_version',
            'password',
            'region',
            'token',
            'username'
        )
        datalist = (
            fakes.VERSION,
            configuration.REDACTED,
            fakes.REGION_NAME,
            configuration.REDACTED,
            fakes.USERNAME,
        )

        cmd = configuration.ShowConfiguration(self.app, None)

        parsed_args = self.check_parser(cmd, arglist, verifylist)

        columns, data = cmd.take_action(parsed_args)

        self.assertEqual(column_list, columns)
        self.assertEqual(datalist, data)

--mask ์˜ต์…˜์€ ๊ธฐ๋ณธ์ ์œผ๋กœ cloud_config ์˜ต์…˜์„ ๊ธฐ๋ณธ์œผ๋กœ ์ ์šฉํ•˜๋Š” ์ƒํ™ฉ์ด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์— ๊ตฌํ˜„๋˜์–ด ์žˆ์—ˆ๊ณ  (devstack CI ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋“ฑ์—์„œ ํ™•์ธ), global_env ์ƒํ™ฉ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ์—†๋Š” ์ƒํ™ฉ์ด์—ˆ์Œ (์‹คํ–‰๋˜๋Š” ๊ธฐ๋Šฅ๋„ ํ•ด๋‹น ์ฝ”๋“œ๋งŒ ๋น ์ ธ ์žˆ์—ˆ์Œ)

๋”ฐ๋ผ์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ , ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์— ์ ์šฉ๋˜๋Š” fake auth ์ธ์ฆ ๊ฐ’๋“ค์„ ์œ„์˜ ๊ตฌ์กฐ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ ์ž‘์—…์„ ์ง„ํ–‰

    def __init__(self):
        self.compute = None
        self.identity = None
        self.image = None
        self.object_store = None
        self.volume = None
        self.network = None
        self.session = None
        self.auth_ref = None
        self.auth_plugin_name = None
        self.network_endpoint_enabled = True
        self.compute_endpoint_enabled = True
        self.volume_endpoint_enabled = True
        self.configuration_type = "cloud_config" # ๋‚ด๊ฐ€ ์ถ”๊ฐ€ํ•œ ์ฝ”๋“œ

    def get_configuration(self): # ๊ธฐ์กด ํ•จ์ˆ˜ ๋ณ€๊ฒฝ -> config ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ cloud_config or global_env์— ๋”ฐ๋ผ ์ž…๋ ฅ๋ณ€์ˆ˜ ๋ณ€๊ฒฝ

        config = {
            'region': REGION_NAME,
            'identity_api_version': VERSION,
        }

        if self.configuration_type == "cloud_config":
            config["auth"] = {
                'username': USERNAME,
                'password': PASSWORD,
                'token': AUTH_TOKEN,
            }
        elif self.configuration_type == "global_env":
            config["username"] = USERNAME
            config["password"] = PASSWORD
            config["token"] = AUTH_TOKEN

        return config

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋• ๋ชฉ์—… ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์™€ ๊ฐ™์€ fakes.py๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๊ณ  ๋„์ €ํžˆ configuration.py์—์„œ ํ…Œ์ŠคํŠธ ํŒŒ์ผ๋กœ ๋ณ€๊ฒฝ ๊ฐ’์„ ์ „๋‹ฌํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ๋– ์˜ค๋ฅด์ง€ ์•Š์•„์„œ ์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ์ ์šฉํ–ˆ์Œ

2. ๊ฒฐ๊ณผ

image

๋‹คํ–‰ํžˆ๋„ Zuul CI์—์„œ ์—๋Ÿฌ ๋ฐœ์ƒ ์—†์ด ์ปค๋ฐ‹์ด ๋˜์—ˆ์Œ

์ด์ œ maintainer์˜ ์ƒˆ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ๋Œ€๊ธฐ ์ค‘์ž„

`OpenStack hypervisor uptime` ์ปค๋งจ๋“œ ๊ตฌํ˜„ ์™„๋ฃŒ

์˜ค๋Š˜ ๋ฌธ๋“ ์˜คํ”ˆ์Šคํƒ ์ปค๋งจ๋“œ ํŒ€์›๋“ค๊ณผ ๊ฐœ๋ฐœํ–ˆ๋˜ ๋‚ด์šฉ๋“ค์„ ํ•œ ๋ฒˆ ์ญ‰ ๋Œ์•„๋ณด๋ฉด์„œ, ๋ฌธ๋“ ๋น ๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์ด ๋ณด์˜€๋˜ Nova ์ปดํฌ๋„ŒํŠธ์˜ ํ•˜์ดํผ ๋ฐ”์ด์ € ๊ด€๋ จ ๋ชจ๋“ˆ์ด ๋ˆˆ์— ๋“ค์–ด์™€์„œ, ์•„๋ฌด ์ƒ๊ฐ ์—†์ด ๊ตฌํ˜„์„ ์‹œ์ž‘ํ–ˆ๋‹ค.

(์ปจํŠธ๋ฆฌ๋ทฐ์…˜์€ ์ด๋ฏธ ์ข…๋ฃŒ๋˜์—ˆ๋‹ค)

๊ตฌํ˜„์„ ์ž์ •๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ํ˜„์žฌ ์‹œ๊ฐ ์ƒˆ๋ฒฝ 2์‹œ 13๋ถ„, ์ฝ”๋“œ๋ฅผ 2์‹œ๊ฐ„๋„ ์•ˆ๋˜์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊นŒ์ง€ ๋ชจ๋‘ ์ž‘์„ฑํ•˜๊ณ  ์ปค๋ฐ‹๊นŒ์ง€ ํ–ˆ๋‹ค.

๋ฏธ์นœ๊ฑด๊ฐ€? ์ฒซ๋ฒˆ์งธ openstack task list #18 ์ด๊ฑฐ ๊ตฌํ˜„ํ•  ๋•Œ 3์ฃผ ๊ฑธ๋ ธ๋Š”๋ฐ, ์ด์ œ ์ฝ”๋“œ ๊ตฌ์กฐ๊ฐ€ ๋ˆˆ์— ์ต์–ด์„œ ๊ทธ๋Ÿฐ์ง€ 2์‹œ๊ฐ„๋งŒ์— ๊ตฌํ˜„ํ–ˆ๋‹ค.

100์ค„๋„ ์•ˆ๋˜๋Š” ์ฝ”๋“œ์ด๊ธฐ๋Š” ํ•˜์ง€๋งŒ, ์–ด๋””๋ฅผ ๋ณด๊ณ  ๊ตฌํ˜„ํ•ด์•ผํ•˜๋Š”์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์žˆ๋˜ ์ , ๊ทธ๋ฆฌ๊ณ  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋กœ ๋ฌด์—‡์„ ํ…Œ์ŠคํŠธํ• ์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์žˆ๋˜ ์  ๋“ฑ์ด ๋น ๋ฅธ ์ฝ”๋“œ ๊ตฌํ˜„์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ–ˆ๋‹ค.

์ด๊ฒƒ์œผ๋กœ ์˜คํ”ˆ์Šคํƒ ์ปค๋งจ๋“œ๋ฅผ 2๋ฒˆ์งธ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ๋‚ด ์ƒ๊ฐ์ธ๋ฐ ์ง€๊ธˆ ์•„์ง ๊ตฌํ˜„ ์•ˆ๋˜์–ด ์žˆ๋Š” ์ปค๋งจ๋“œ๋“ค ์ค‘์— SDK์— ๊ด€๋ จ API๋งŒ ์—ฐ๋™ ์ž˜ ๋˜์–ด ์žˆ์œผ๋ฉด ์กฐ๊ธˆ ๋” ์ปค๋งจ๋“œ ๊ฐœ๋ฐœ์„ ํ•ด ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

https://review.opendev.org/c/openstack/python-openstackclient/+/816864

image

์ด์ฏค๋˜๋‹ˆ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒŒ ์‹ ๋‚œ๋‹ค.

`glance task-list` cmd programming (๊ฐœ๋ฐœ ์™„๋ฃŒ)

Openstack-client์—์„œ glance task-list๊ฐ€ ๋ช…๋ น์–ด๋กœ ๊ตฌํ˜„์ด ์•ˆ๋˜์–ด ์žˆ์Œ์— ๋”ฐ๋ผ ์ปค๋งจ๋“œ๋ผ์ธ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์‹œ์ž‘

์ž‘์—… ํ•„์š” ์‚ฌํ•ญ

  1. cmd ๋ช…์นญ ๊ทœ์ • (openstack task list๋ผ๊ณ  ๊ทœ์ •)
  2. setup.cfg์— ๋ช…๋ น์–ด ๋“ฑ๋ก
  3. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๊ตฌํ˜„

์œ„์˜ 3๊ฐ€์ง€ ์‚ฌํ•ญ์œผ๋กœ ๊ฐœ๋ฐœ ์ž‘์—… ์ฐฉ์ˆ˜ ์ค‘

cmd ๊ฐœ๋ฐœ ๊ทœ์น™์€ ์•„๋ž˜์˜ glance task-list ์˜ต์…˜์— ๋”ฐ๋ผ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ ์ค‘

image

ํ˜„์žฌ ์ž‘์—…์ค‘์ธ ์‚ฌํ•ญ -> cmd ํ•„ํ„ฐ๋ง ์˜ต์…˜

# python-openstackclient/openstackclient/image/v2/image.py

class TaskImage(command.Lister):
    _description = _("List available task images")

    def get_parser(self, prog_name):
        parser = super(TaskImage, self).get_parser(prog_name)

        parser.add_argument(
            '--sort',
            metavar="<key>[:<direction>]",
            default='name:asc',
            help=_("Sort output by selected keys and directions(asc or desc) "
                   "(default: name:asc), multiple keys and directions can be "
                   "specified separated by comma"),
        )

        parser.add_argument(
            "--page-size",
            metavar="<size>",
            help=argparse.SUPPRESS,
        )

        parser.add_argument(
            '--type',
            metavar='<type>',
            choices=[
                'evacuation', 'live-migration', 'cold-migration', 'resize', # image ๊ฐ’์— ๋งž๊ฒŒ ๋ณ€๊ฒฝ ํ•„์š”
            ],
            help=_('Filter tasks by type'),
        )

        parser.add_argument(
            '--status',
            metavar='<status>',
            default=None,
            help=_("Filter tasks based on status.")
        )

์ฐธ๊ณ  ๋ฌธ์„œ

์ง€์—ญ ์Šคํ”„๋ฆฐํŠธ ํ†ตํ•ฉ CLI ๋ฌธ์„œ ํŒจ์น˜ ์‚ฌํ•ญ

๋ฌธ์„œ์— ๋ˆ„๋ฝ๋œ 2๊ฐœ์˜ ์ปค๋งจ๋“œ

cinder quota-usage --> openstack quota list $project-id --volume

instance action --> openstack server event show

์ง€์—ญ์Šคํ”„๋ฆฐํŠธ ๋ฉ˜ํ‹ฐ ์ค‘ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์šฐ์„  ๊ตฌํ˜„์ž์—๊ฒŒ ์ œ๊ณต ์ง„ํ–‰

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.