IT

JAVA SPRING HTTP PATCH CALL 본문

SPRING

JAVA SPRING HTTP PATCH CALL

셋글자 2020. 8. 11. 10:51
728x90

쿠버네티스 deployment pod 갯수조정시 적용

PATCH method로만 가능해서 구글링하여 정리

 

logger.debug("=============kubernetesPodsSet==START=============");

 

        Map<String, Object> result = new HashMap<String, Object>();

        CloseableHttpClient httpClient = HttpClients.createDefault();

        BufferedReader reader = null;

 

        String url = "";

        String deploymentName = "";

        String Authorization = "";

        try {

            int poolCnt = Integer.parseInt((String) param.get("poolCnt"));

            String poolSeq = (String) param.get("poolSeq");

 

            List<EgovMap> kuberInfoList = monitorService.selectKubernetesCodeValue();

 

            for (EgovMap tempMap : kuberInfoList) {

                switch ((String) tempMap.get("code")) {

                case "token":

                    Authorization = "Bearer " + (String) tempMap.get("codeValue");

                    break;

                case "replicasUrl":

                    //여기서 default는 namespace명

                    url = https://192.168.217.128:6443/apis/apps/v1/namespaces/default/deployments/

                    break;

                }

 

                if (poolSeq.equals((String) tempMap.get("code"))) {

                    deploymentName = (String) tempMap.get("codeValue");

                }

 

            }

 

            String data = "{\"spec\":{\"replicas\":" + poolCnt + "}}";

            String contentType = "application/strategic-merge-patch+json";

 

            url += deploymentName;

 

            logger.debug("===deployment>" + deploymentName);

            logger.debug("===poolCnt>" + poolCnt);

            logger.debug("===data>" + data);

            logger.debug("===Authorization>" + Authorization);

            logger.debug("===url>" + url);

 

            HttpPatch httpPatch = new HttpPatch(url);

            httpPatch.setHeader("Content-Type", contentType);

            httpPatch.setHeader("Authorization", Authorization);

 

            StringEntity stringEntity = new StringEntity(data);

            httpPatch.setEntity(stringEntity);

 

            CloseableHttpResponse httpResponse;

            httpResponse = httpClient.execute(httpPatch);

            reader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent()));

 

            String inputLine;

            StringBuffer response = new StringBuffer();

 

            while ((inputLine = reader.readLine()) != null) {

                response.append(inputLine);

            }

            logger.debug(response.toString());

 

            result.put("code", "00");

        } catch (Exception e) {

            e.printStackTrace();

            result.put("code", "99");

            result.put("msg", e.getMessage() == null ? e.toString() : e.getMessage());

        } finally {

            try {

                reader.close();

                httpClient.close();

            } catch (Exception e) {

                e.printStackTrace();

            }

 

            logger.debug("=============kubernetesPodsSet==END=============");

        }

 

        return result;

    }